Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- quest bounty begin
- state start begin
- when 9003.chat.'Kopfgelder | Kopfgeld aussetzen' begin
- function a()
- say_title('Ein Titel direkt aus einer Funktion')
- say('Mit Text')
- end
- a()
- say('a() ist eine Funktion')
- end
- end
- end
- BOUNTY_MAX_JOBS = 10
- BOUNTY_MAX_COUNTER_JOBS = MAX_JOBS
- BOUNTY_EXPENDITURE = 0
- BOUNTY_MIN_REWARD = 0
- BOUNTY_TITLE = 'Kopfgeld'
- BOUNTY_NPC_NAME = mob_name(string.format("%d", npc.get_race()))
- BOUNTY_SUBTITLE = string.format('[%s]|:', BOUNTY_NPC_NAME)
- bounty.wndInterface(BOUNTY_TITLE, BOUNTY_SUBTITLE)
- --//WindowStart
- local character_set = {
- {'tapferer', 'Krieger', 'Ninja', 'Sura', 'Schamane'},
- {'tapfere', 'Kriegerin', 'Kunoichi', 'Sura', 'Schamanin'}
- }
- local character_presentation = string.format('Hallo %s, %s %s, hast du was für mich?', pc.get_name(), character_set[(pc.get_sex() + 1][1]), character_set[(pc.get_sex() + 1)][(pc.get_job() + 2)])
- say_title(title)
- --//ParagraphStart
- say('')
- say(character_presentation)
- say('Kann ich dir meine Dienste erweisen, indem ich dich über')
- say('die aktuelle Geschenisse der Kopfgelder informiere,'
- say('ist\'s das?')
- say('Ich werde dir einen Überblick gewähren.')
- say('')
- --//ParagraphEnd
- --//ParagraphStart
- say('')
- say(subtitle)
- say('Wähle aus, was du begehrst.')
- say('')
- --//ParagraphEnd
- local cats = {'Kopfgeld aussetzen', 'Übersicht der Kopfgelder', 'Abbrechen'}
- local cat = select_table(cats)
- title = string.format('%s -> %d. %s', title, cat, cats[cat])
- if (cat == 1) then
- --//WindowStart
- say_title(title)
- --//ParagraphStart
- say('')
- say('Ah, du möchtest somit ein Kopfgeld auf einen gewissen Jemanden aussetzen?')
- say('')
- say('Sei dir bewusst, was dies für Konsequenzen mit sich bringt.')
- say('Sei dir im Klaren, dass diese Person danach vielleicht einen Groll gegen dich hegt.')
- say('Ich kann eine Karikatur anfertigen lassen und diese an\'s Schwarze Brett hängen.')
- say('')
- say('Bist du damit einverstanden, dass ich dies tue oder möchtest du dir nochmals Gedanken machen?')
- say('Überlege dir deine Antwort gut und sei gewarnt.')
- say('')
- --//ParagraphEnd
- if (true) then
- --//ParagraphStart
- say('')
- say(subtitle)
- say('Möchtest du dies in Auftrag geben?')
- say('')
- --//ParagraphEnd
- if (true) then
- --//WindowStart
- say_title(title)
- --//ParagraphStart
- say('')
- say('Ok, ich werde einem Zeichner der Stadt den Auftrag, eine Karkatur zu erstellen, erteilen.')
- say('Nur sollte ich mich vergewissern können, um welche Person es sich handelt.')
- say('Kennst du das Opfer beim Namen? Dies würde mir helfen den gesuchten ausfindig machen zu können.')
- say('')
- --//ParagraphEnd
- ::information_select::
- --//ParagraphStart
- say('')
- say(subtitle)
- say('Gib den Namen des Gesuchten/der Gesuchten.')
- say(string.format('Das gewählte Opfer darf kein Opfer von %d anderen Intrigen sein.', BOUNTY_MAX_JOBS))
- say('Schreibe den Namen deines gewählten Ziels auf.')
- say('')
- --//ParagraphEnd
- if (true) then
- --//WindowStart
- say_title(title)
- --//WindowStart
- say_title(title)
- --//ParagraphStart
- say('')
- say('Gut, somit werde ich dies in Auftrag geben.')
- say('Ich muss wohl kaum erwähnen, dass dich dies den Umständen entsprechend was kostet, oder?')
- say('Den Kosten entsprechend, werden sich ebenfalls Sölnder finden, welche deinen Auftrag annehmen.')
- say('')
- --//ParagraphEnd
- ::information_purchase::
- --//ParagraphStart
- say('')
- say(subtitle)
- say('Je mehr du zahlst, desto eher findet sich ein tapferer Krieger für die Mission.')
- say('Wähle deshalb mit bedacht, wie viel du den Kämpfern zahlst, dafür, dass sie dies an sich nehmen.')
- say('')
- --//ParagraphEnd
- --//ParagraphStart
- say('')
- say_reward(string.format('Kosten der Aufwendung: %d', BOUNTY_EXPENDITURE))
- say_reward(string.format('Minimale Kosten der Ausschreibung: %d', BOUNTY_EXPENDITURE))
- say_reward(string.format('Minimale Gesamtkosten: %d', (BOUNTY_EXPENDITURE + BOUNTY_MIN_REWARD)))
- say('')
- --//ParagraphEnd
- if (true) then
- --//WindowStart
- say_title(title)
- --//ParagraphStart
- say('')
- say('Ok, in Ordnung, ich werde mir deiner dienen.')
- say('Ich werde nun zum Marktplatz gehen und dort einen Auftrag ausschreiben.')
- say('Findet sich ein Maler, der Begabung, mit nur einem Namen, eine Person zu zeichnen,')
- say('Dann werde ich dir Bescheid geben durch einen Boten mit einer Schriftrolle.')
- say('')
- --//ParagraphEnd
- local result_msg = string.format('%s hat ein Kopfgeld über %d auf %s ausgesetzt.', pc.get_name(), reward, opponent)
- --//ParagraphStart
- say('')
- say(subtitle)
- say('Ein Auftrag wurde erteilt.')
- say(result_msg)
- say('')
- --//ParagraphEnd
- --//WindowEnd
- notice_all(result_msg)
- end
- else
- --//ParagraphStart
- say('')
- say('Den? Der ist tot bevor ich jemanden gefunden habe.')
- say('Du bist nicht der Erste, der von dem wissen will.')
- say('Nenne mir ein weitunbekannteres Opfer.')
- say('')
- --//ParagraphEnd
- --//ParagraphStart
- say('')
- say(subtitle)
- say('Der angegebene Spieler besitzt bereits 10 Kopfgelder auf seinem Rücken.')
- say('Wähle ein Spieler dessen unbeliebtheit geringer ist als dessen diesem.')
- say('')
- --//ParagraphEnd
- --//WindowEnd
- --//WindowStart
- say_title(title)
- --//ParagraphStart
- say('')
- say('Du willst dich selber anprangern?')
- say('Bitte, von wem soll ich, nach erfolgreichem Ausführen, das Geld kriegen?')
- say('')
- --//ParagraphEnd
- --ParagraphStart
- say('')
- say(subtitle)
- say('Du kannst dich nicht selbst ins Visier nehmen.')
- say('Wähle ein Opfer, dessen du nicht bist.')
- say('')
- --//ParagraphEnd
- --//WindowEnd
- --//WindowStart
- say_title(title)
- --//ParagraphStart
- say('')
- say('Mir ist keiner der Stadt geläufig mir einem solchen Namen.')
- say('Teile mir einen existenten Namen mit.')
- say('')
- --//ParagraphEnd
- --//ParagraphStart
- say('')
- say(subtitle)
- say('Der, der von dir angegebene Spieler, existiert nicht.')
- say('Schreibe einen existenten Namen nieder.')
- say('')
- --//ParagraphEnd
- --//WindowEnd
- end
- end
- else
- --//ParagraphStart
- say('')
- say(subtitle)
- say('Du hast leider schon zuviele Aufträge erteilt.')
- --say('Du kannst maximal ' .. BOUNTY_MAX_JOBS .. ' Aufträge erteilen.')
- say(string.format('Du kannst maximal %d Aufträge erteilen.', BOUNTY_MAX_JOBS))
- say('')
- --//ParagraphEnd
- end
- end
- end
- end
- end
- function wndActionPurchase(title, subtitle, player, opponent)
- --//WindowStart
- say_title(title)
- --//ParagraphStart
- say('')
- say('Gut, somit werde ich dies in Auftrag geben.')
- say('Ich muss wohl kaum erwähnen, dass dich dies den Umständen entsprechend was kostet, oder?')
- say('Den Kosten entsprechend, werden sich ebenfalls Sölnder finden, welche deinen Auftrag annehmen.')
- say('')
- --//ParagraphEnd
- ::information_purchase::
- --//ParagraphStart
- say('')
- say(subtitle)
- say('Je mehr du zahlst, desto eher findet sich ein tapferer Krieger für die Mission.')
- say('Wähle deshalb mit bedacht, wie viel du den Kämpfern zahlst, dafür, dass sie dies an sich nehmen.')
- say('')
- --//ParagraphEnd
- --//ParagraphStart
- say('')
- say_reward(string.format('Kosten der Aufwendung: %d', BOUNTY_EXPENDITURE))
- say_reward(string.format('Minimale Kosten der Ausschreibung: %d', BOUNTY_EXPENDITURE))
- say_reward(string.format('Minimale Gesamtkosten: %d', (BOUNTY_EXPENDITURE + BOUNTY_MIN_REWARD)))
- say('')
- --//ParagraphEnd
- local player_gold = pc.get_gold()
- if (player_gold > (BOUNTY_EXPENDITURE + BOUNTY_MIN_REWARD)) then
- bounty_reward = tonumber(input())
- if (bounty.choice_normal()) then
- if (bounty_reward < BOUNTY_MIN_REWARD) then
- --//WindowStart
- say_title(title)
- --//ParagraphStart
- say('')
- say('Zuwenig. Brauche eindeutig mehr sonst kann ich wenig damit anfangen.')
- say('Ich muss den Maler bezahlen, welcher mir ein Porträt erstellt.')
- say('Zudem sollte der Auftraggeber kein Geiziger sein.')
- say('Wähle einen Beitrag der Summe, welcher dem Auftrag würdig ist.')
- say('')
- --//ParagraphEnd
- --//ParagraphStart
- say('')
- say(subtitle)
- say('Der Gesetze Beitrag entspricht nicht der Summe, welche mindestens von dir verlangt wird.')
- say('Wähle eine Summe, welche genügend Ressourcen abdeckt.')
- say('')
- --//ParagraphEnd
- --//WindowEnd
- goto information_purchase
- elseif (player_gold > (BOUNTY_EXPENDITURE + bounty_reward)) then
- pc.change_gold(player_gold - (BOUNTY_EXPENDITURE + bounty_reward))
- wndActionResult(title, subtitle, bounty_reward, opponent)
- else
- --//WindowStart
- say_title(title)
- --//ParagraphStart
- say('')
- say('Wieviel ist dir dein Auftrag wert?')
- say('Du hast garnicht soviel Geld in deiner Tasche, die du bei dir trägst.')
- say('Wähle einen Beitrag einer Summe, welchen du auch wiedergeben kannst.')
- say('')
- --//ParagraphEnd
- --//ParagraphStart
- say('')
- say(subtitle)
- say('Das Gesetze konnte nicht von deinem Konto beglichen werden.')
- say('Wähle eine Summe, welche dir gewachsen ist.')
- say('')
- --//ParagraphEnd
- --//WindowEnd
- goto information_purchase
- end
- else
- bounty.wndEnd(title, subtitle)
- end
- else
- --//ParagraphStart
- say('')
- say('Du hast nicht ausreichend Kapazität, wenn es um dein Vermögen geht.')
- say('Besser du legst dir noch was zur Seite und kommst wieder, wenn du die Möglichkeiten hast.')
- say('')
- --//ParagraphEnd
- --//ParagraphStart
- say('')
- say(subtitle)
- say('Du hast nicht genügend Kleingeld Ressourcen, um einen solche Mission in Auftrag zu geben.')
- say('')
- --//ParagraphEnd
- bounty.wndEnd(title, subtitle)
- end
- --//WindowEnd
- --bounty_reward = tonumber(input())
- --local choice = bounty.choice()
- function wndActionResult(title, subtitle, reward, opponent)
- --//WindowStart
- say_title(title)
- --//ParagraphStart
- say('')
- say('Ok, in Ordnung, ich werde mir deiner dienen.')
- say('Ich werde nun zum Marktplatz gehen und dort einen Auftrag ausschreiben.')
- say('Findet sich ein Maler, der Begabung, mit nur einem Namen, eine Person zu zeichnen,')
- say('Dann werde ich dir Bescheid geben durch einen Boten mit einer Schriftrolle.')
- say('')
- --//ParagraphEnd
- local result_msg = string.format('%s hat ein Kopfgeld über %d auf %s ausgesetzt.', pc.get_name(), reward, opponent)
- --//ParagraphStart
- say('')
- say(subtitle)
- say('Ein Auftrag wurde erteilt.')
- say(result_msg)
- say('')
- --//ParagraphEnd
- --//WindowEnd
- notice_all(result_msg)
- --say('Du wirst benachrichtigt und dies durch eine Schriftrolle des Auftrages.')
- --chat(string.format('Du hast somit ein Kopfgeld über %d auf %s ausgesetzt.', reward, opponent))
- bounty.wndEnd(title, subtitle)
- end
- end
- end
- end
- function wndOverview(title, subtitle)
- --//WindowStart
- say_title(title)
- --//ParagraphStart
- say('')
- say('Soll ich dir also eine Übersicht der aktuellen Geschenisse liefern?')
- say('Ich kann dich jederzeit informieren, über das, was sich so abspielt.')
- say('was würdest du gerne sehen?')
- say('')
- --//ParagraphEnd
- --//ParagraphStart
- say('')
- say(subtitle)
- say('Wähle aus, was du begehrst.')
- say('')
- --//ParagraphEnd
- local categories = bounty.cancellable({'Übersicht aller Kopfgelder', 'Übersicht meiner Aufträge', 'Ausgesetzte Kopfgelder auf mich'})
- local category = bounty.compare_selection(categories)
- title = string.format('%s -> %d. %s', title, category[2], category[1])
- if (bounty.cancellable_choice(categories, category[2])) then
- local category_links = {
- [1] = function () wndOverviewAll(title, subtitle) end,
- [2] = function () wndOverviewTo(title, subtitle) end,
- [3] = function () wndOverviewFrom(title, subtitle) end
- }
- category_links[category[2]]()
- else
- bounty.wndEnd()
- end
- function wndOverviewAll(title, subtitle)
- --//WindowStart
- say_title(title)
- --//ParagraphStart
- say('')
- say('Hier siehst du eine Übersicht aller Aufträge.')
- say('')
- --//ParagraphEnd
- --//ParagraphStart
- --//ParagraphEnd
- wait()
- bounty.wndEnd()
- --//WindowEnd
- end
- function wndOverviewTo(title, subtitle)
- ::overview_to::
- --//WindowStart
- say_title(title)
- --//ParagraphStart
- say('')
- say('Hier siehst du eine Übersicht all deiner Aufträge.')
- say('')
- --//ParagraphEnd
- --//ParagraphStart
- --//ParagraphEnd
- local categories = bounty.cancellable({'Auftrag löschen', 'Alle Aufträge löschen'})
- local category = compare_selection(categories)
- if (bounty.cancellable_choice(categories, category[2])) then
- if (true) then
- --//WindowStart
- say_title(title)
- --//ParagraphStart
- say('')
- say('Wähle den zu löschenden Auftrag aus.')
- say('')
- --//ParagraphEnd
- --table.insert(overview_job, 'Abbrechen')
- overview_job = bounty.cancellable(overview_job)
- local job = compare_selection(overview_job)
- if (cancellable_choice(overview_job, job[2])) then
- local opponent_name = overview_job_keyset[job[2]]
- local overview_delete_sql = string.format('DELETE FROM bounty WHERE name = "%s" AND opponent_name = "%s";', pc.get_name(), opponent_name)
- local overview_delete_query = mysql_query(overview_delete_sql)
- else
- bounty.wndEnd()
- end
- --//WindowEnd
- goto overview_to
- end
- else
- bounty.wndEnd()
- end
- end
- function wndOverviewFrom(title, subtitle)
- --//WindowStart
- say_title(title)
- --//ParagraphStart
- say('')
- say('Hier siehst du eine Übersicht all anderer Aufträge gegen dich.')
- say('')
- --//ParagraphEnd
- --//ParagraphStart
- --//ParagraphEnd
- wait()
- bounty.wndEnd()
- --//WindowEnd
- end
- end
- function create_overview(arguments)
- arguments = (arguments == nil) and '1' or arguments
- local overview_sql = string.format([[
- USE player;
- SET @GOLD_NAME := (SELECT locale_name FROM item_proto WHERE vnum = 1);
- (SELECT
- @NAME_MAX := MAX(LENGTH(name)),
- @OPPONENT_NAME_MAX := MAX(LENGTH(opponent_name)),
- @GOLD_MAX := MAX(LENGTH(REPLACE(gold, '000', 'k')))
- FROM bounty);
- SELECT LIST_ROW FROM
- ((SELECT
- CONCAT('[',
- RPAD(name, @NAME_MAX, ' '), '|',
- RPAD(opponent_name, @OPPONENT_NAME_MAX, ' '), '|',
- RPAD(REPLACE(gold, '000', 'k'), @GOLD_MAX, ' '),
- ']') AS LIST_ROW
- FROM bounty a ORDER BY create_time DESC) AS LIST_TABLE) WHERE %s;
- ]], arguments)
- local overview_query = mysql_query(overview_sql)
- local overview_table = {}
- table.foreach(overview_query, function(k, tcell)
- table.insert(overview_table, tcell[1])
- end)
- return overview_table
- end
- function job_create(player_name, opponent_name, gold)
- local job_sql = string.format([[
- USE player;
- SET @PLAYER_NAME := '%s';
- SET @OPPONENT_NAME := '%s';
- SET @GOLD_VALUE := %d;
- INSERT INTO bounty (name, opponent_name, gold) VALUES (@PLAYER_NAME, @OPPONENT_NAME, @GOLD_VALUE);
- SELECT IF(
- (SELECT COUNT(*) FROM bounty WHERE
- name = @PLAYER_NAME AND
- opponent_name = @OPPONENT_NAME AND
- gold = @GOLD_VALUE LIMIT 1) = 1
- , TRUE, FALSE);
- ]], player_name, opponent_name, gold)
- local job_query = mysql_query(job_sql)
- local job_result = job_query[1][1]
- return job_result
- end
- function job_survey(player_name, opponent_name, max_counter_bounty)
- local job_survey_sql = string.format([[
- USE player;
- SET @PLAYER_NAME := '%s'
- SET @OPPONENT_NAME := '%s';
- SET @COUNTER_MAX := %d;
- SET @EXISTENCE := IF ((SELECT COUNT(*) FROM player WHERE name = @OPPONENT_NAME LIMIT 1) = 1, TRUE, FALSE);
- PREPARE COUNTER_SQL FROM 'SELECT COUNT(*) FROM bounty WHERE opponent_name = @OPPONENT_NAME LIMIT ? INTO @COUNTER_COUNT';
- EXECUTE COUNTER_SQL USING @COUNTER_MAX;
- SET @CONFIDENCE := IF ((SELECT COUNT(*) FROM player WHERE name = @OPPONENT_NAME OR name = @PLAYER_NAME GROUP BY name, account_id LIMIT 2) = 2, TRUE, FALSE);
- SET @COUNTER := IF (@COUNTER_COUNT < @COUNTER_MAX, TRUE, FALSE);
- (SELECT
- @EXISTENCE AS EXISTENCE,
- @CONFIDENCE AS CONFIDENCE,
- @COUNTER AS COUNTER);
- ]], player_name, opponent_name, max_counter_bounty)
- local job_survey_query = mysql_query(job_survey_sql)
- local job_survey_table = {}
- job_survey_table['EXISTENCE'] = job_survey_query[1][1]
- job_survey_table['CONFIDENCE'] = job_survey_query[1][2]
- job_survey_table['COUNTER'] = job_survey_query[1][3]
- return job_survey_table
- end
- function job_delete(player_name, opponent_name)
- local job_delete_sql = string.format([[
- USE player;
- SET @PLAYER_NAME := '%s';
- SET @OPPONENT_NAME := '%s';
- DELETE FROM bounty WHERE name = @PLAYER_NAME AND opponent_name = @OPPONENT_NAME;
- SELECT IF(
- (SELECT COUNT(*) FROM bounty WHERE
- name = @PLAYER_NAME AND
- opponent_name = @OPPONENT_NAME LIMIT 1) = 0
- , TRUE, FALSE);
- ]], player_name, opponent_name)
- local job_delete_query = mysql_query(job_delete_sql)
- local job_delete_result = job_delete_query[1][1]
- return job_delete_result
- end
- function bounty_survey(player_name, max_bounty_jobs)
- local bounty_survey_sql = string.format([[
- USE player;
- SET @PLAYER_NAME := '%s';
- SET @COUNTER_MAX := %d;
- PREPARE COUNTER_SQL FROM 'SELECT COUNT(*) FROM bounty WHERE name = @PLAYER_NAME LIMIT ? INTO @COUNTER_COUNT';
- EXECUTE COUNTER_SQL USING @COUNTER_MAX;
- SELECT IF (@COUNTER_COUNT < @COUNTER_MAX, TRUE, FALSE);
- ]], player_name, max_bounty_jobs)
- local bounty_survey_query = mysql_query(bounty_survey_sql)
- local bounty_survey_result = bounty_survey_query[1][1]
- return bounty_survey_result
- end
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement