Bountyhunter (Kopfgeld NPC)

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Bountyhunter (Kopfgeld NPC)

      Hallo Zusammen.

      Hier möchte ich Euch meinen Bountyhunter zur Verfügung stellen.

      Bei diesem NPC könnt Ihr auf einen Beliebigen Spieler ein Kopfgeld aussetzen und wer diesen Spieler dann killt bekommt das auf Ihn ausgesetzte Kopfgeld, Ihr seht auch ob der Spieler Online oder Offline ist sobald Ihr auf Bounty Liste auf ein Kopfgeld klickt.

      Screens:



      Bounty Enter:



      Name:





      Gold:

      ACHTUNG: Die Anzahl die Ihr an Gold eingebt wird Euch auch Abgezogen Sprich habt Ihr 11500 Gold in der Tasche und gebt wie im Screen die Zahl 7500 ein habt Ihr anschliessend nurnoch 4000 Gold

      Screenshot_1.png





      Screenshot_3.png

      Information:



      Bestätigen:



      Bounty Liste:



      Nach dem Kill:



      Screenshot_1.png

      Und Hier das Script und die DB Struktur dazu:


      C Source Code: Bountyhunter.lua

      1. local BOUNTYHUNTER_NPCID = 80081
      2. local MINIMUM = 500
      3. local MAXIMUM = 214000
      4. local sqltabname = "bountyhunter_table"
      5. ------Tables:--
      6. local KG_sys = {}
      7. KG_sys.list = LSA.wo_sqltoluatable(sqltabname, "id", {{"name","string"},{"gold","float"}})
      8. KG_sys.reg = {}
      9. ---------------
      10. local bhname = "Bountyhunter"
      11. local menu1 = "|cffff0000>----->|r |cff6666FFBounty Liste |cffff0000<-----<|r"
      12. local menu2 = "|cffff0000>----->|r |cff6666FFBounty Enter |cffff0000<-----<|r"
      13. local menu3 = "|cffff0000>----->|r |cff6666FFMein Bounty |cffff0000<-----<|r"
      14. local menu4 = "|TInterface\\icons\\Ability_Vehicle_LoadSelfCatapult:20|t >---> |cffff0000[<<]|r[Auf Wiedersehen]|cffff0000[>>]|r <---<"
      15. local menu5 = "N\195\164chste"
      16. local menu6 = "|cffff0000>----->|r |cff6666FFName |cffff0000<-----<|r"
      17. local menu7 = "|cffff0000>----->|r |cff6666FFGold |cffff0000<-----<|r"
      18. local menu8 = "|cffff0000>----->|r |cff6666FFInformation |cffff0000<-----<|r"
      19. local menu9 = "|cffff0000>----->|r |cff6666FFBest\195\164tigen |cffff0000<-----<|r"
      20. local menu10 = "|TInterface\\icons\\Ability_Vehicle_LoadSelfCatapult:20|t >---> |cffff0000[<<]|r[Auf Wiedersehen]|cffff0000[>>]|r <---<"
      21. local menu11 = "Name: |cffff0000NAME, |cff6666FFKopfgeld: |cffFFFF00COUNT"
      22. local menu12 = "Zur\195\188ck"
      23. local message1 = "Name: NAME, Bounty: COUNT, ONOFF."
      24. local message2 = "Name erfolgreich eingegeben."
      25. local message3 = " Dieser Name ist bereits vorhanden, aber Du kannst dein Gold hinzuf\195\188gen!"
      26. local message4 = "Dieser Name ist nicht in unserer Datenbank registriert!"
      27. local message5 = "Du kannst kein Kopfgeld auf dich selber setzen."
      28. local message6 = "Gold erfolgreich eingegeben."
      29. local message7 = "Du darfst nur Zahlen eingeben!"
      30. local message8 = "Du hast nicht genug Gold."
      31. local message9 = "Du musst eine Anzahl an Gold w\195\164hlen."
      32. local message10 = "Du musst einen Spielernamen ausw\195\164hlen."
      33. local message11 = "Dein Kopfgeld betr\195\164gt COUNT Gold."
      34. local message12 = "Gold erfolgreich aktualisiert!"
      35. local message13 = "Dein Kopfgeld wurde um COUNT erh\195\182ht."
      36. local message14 = "Spieler erfolgreich in die Liste eingetragen!"
      37. local message15 = "Auf dich wurde ein Kopfgeld ausgesetzt. Total: COUNT Gold."
      38. local message16 = "Du hast eine Kopfgeld Mission erf\195\188llt , und sackst das Gold ein!"
      39. local message17 = "Du wurdest von einem Kopfgeldj\195\164ger schikaniert!"
      40. local message18 = "Zur Zeit sind keine Eintr\195\164ge."
      41. local message19 = "Die minimale Menge an Gold , die Du setzen kannst ist h\195\182her "
      42. local message20 = "Die minimale Menge an Gold , die Du setzen kannst ist niedriger !"
      43. ------------------------------------------------------------------------
      44. -------------------------Gossip Menu------------------------------------
      45. function BountyhunterNPC_Gossip(unt, _, plr)
      46. unt:GossipCreateMenu(1, plr, 0)
      47. unt:GossipMenuAddItem(3,menu1,100,0)
      48. unt:GossipMenuAddItem(3,menu2,2,0)
      49. for k,v in pairs(KG_sys.list)do
      50. if(v[1]==plr:GetName())then
      51. unt:GossipMenuAddItem(3,menu3,7,0)
      52. break;
      53. end
      54. end
      55. unt:GossipMenuAddItem(7,"["..menu4.."]", 99, 0)
      56. unt:GossipSendMenu(plr)
      57. end
      58. function BountyhunterNPC_Select(unt, _, plr, _, id, code)
      59. local idxconf = {100, 11, KG_sys.list}
      60. if(id>=idxconf[1])then
      61. if(table.getn(idxconf[3])>=1)then
      62. local idxtab = LSA.indexinator(idxconf[1], table.getn(idxconf[3])+idxconf[1], idxconf[2], 1)
      63. local menu_ = idxconf[1]
      64. if(LSA.tabsearchK(idxtab, id))then
      65. --CREATE FUNCTION!!
      66. local onoff = {[true]="|cff6666FFOnline|R", [false]="|cff6666FFOffline|R"}
      67. plr:SendBroadcastMessage("|cffff0000["..bhname.."]: |R|cff6666FF"..string.gsub(string.gsub(string.gsub(message1, "ONOFF", onoff[LSA.plrnameon(idxconf[3][idxtab[id]][1])]), "COUNT", idxconf[3][idxtab[id]][2]), "NAME", idxconf[3][idxtab[id]][1]).."|R")
      68. unt:GossipSendMenu(plr)
      69. --CREATE FUNCTION END!!
      70. else
      71. for x=idxconf[1],table.getn(idxconf[3])+idxconf[1],idxconf[2] do
      72. if(x==id)and(id==menu_)then
      73. local index_ = menu_+1
      74. unt:GossipCreateMenu(1, plr, 0)
      75. local menu_ = menu_+idxconf[2]
      76. for y=index_,index_+idxconf[2]-1,1 do
      77. if(idxconf[3][idxtab[index_]]~=nil)then
      78. --CREATE MENUNAME!!
      79. unt:GossipMenuAddItem(3,string.gsub(string.gsub(menu11, "NAME", idxconf[3][idxtab[index_]][1]), "COUNT", idxconf[3][idxtab[index_]][2]),y,0)
      80. --CREATE MENUNAME END!!
      81. end
      82. if(index_+1>menu_)and(idxconf[3][idxtab[index_+1]]~=nil)then
      83. unt:GossipMenuAddItem(7,"["..menu5.."]",menu_,0)
      84. break
      85. end
      86. index_ = index_+1
      87. end
      88. if(menu_>idxconf[1]+idxconf[2])then unt:GossipMenuAddItem(7,"["..menu12.."]",id-idxconf[2],0) end
      89. unt:GossipMenuAddItem(7,"["..menu4.."]", 99, 0)
      90. unt:GossipSendMenu(plr)
      91. end
      92. menu_ = menu_+idxconf[2]
      93. end
      94. end
      95. else
      96. plr:SendBroadcastMessage("|cffff0000["..bhname.."]: |R|cff6666FF"..message18.."|R")
      97. unt:GossipSendMenu(plr)
      98. end
      99. end
      100. if(id==2)then
      101. KG_sys.reg[plr:GetName()] = {}
      102. KG_sys.reg[plr:GetName()].name = "none"
      103. KG_sys.reg[plr:GetName()].gold = 1
      104. unt:GossipCreateMenu(1, plr, 0)
      105. unt:GossipMenuAddItem(3,menu6,3,1)
      106. unt:GossipMenuAddItem(3,menu7,4,1)
      107. unt:GossipMenuAddItem(3,"["..menu8.."]",5,0)
      108. unt:GossipMenuAddItem(3,"["..menu9.."]",6,0)
      109. unt:GossipMenuAddItem(7,"["..menu10.."]", 99, 0)
      110. unt:GossipSendMenu(plr)
      111. end
      112. if(id==3)then
      113. unt:GossipSendMenu(plr)
      114. if(code~=plr:GetName())then
      115. if(CharDBQuery("SELECT `name` FROM `characters` WHERE `name` = '"..code.."';")~=nil)then
      116. local pleyr = 1
      117. for k,v in pairs(KG_sys.list)do
      118. if(v[1]==code)then
      119. pleyr = 2
      120. break;
      121. end
      122. end
      123. if(pleyr==1)then
      124. plr:SendBroadcastMessage("|cffff0000["..bhname.."]: |R|cff6666FF"..message2.."|R")
      125. else
      126. plr:SendBroadcastMessage("|cffff0000["..bhname.."]: |R|cff6666FF"..message3.."|R")
      127. end
      128. KG_sys.reg[plr:GetName()].name = code
      129. else
      130. plr:SendBroadcastMessage("|cffff0000["..bhname.."]: |R|cff6666FF"..message4.."|R")
      131. end
      132. else
      133. plr:SendBroadcastMessage("|cffff0000["..bhname.."]: |R|cff6666FF"..message5.."|R")
      134. end
      135. end
      136. if(id==4)then
      137. unt:GossipSendMenu(plr)
      138. if(tonumber(code)~=nil)then
      139. plr:SendBroadcastMessage("|cffff0000["..bhname.."]: |R|cff6666FF"..message6.."|R")
      140. KG_sys.reg[plr:GetName()].gold = tonumber(code)
      141. else
      142. plr:SendBroadcastMessage("|cffff0000["..bhname.."]: |R|cff6666FF"..message7.."|R")
      143. end
      144. end
      145. if(id==5)then
      146. unt:GossipSendMenu(plr)
      147. local pleyr = 1
      148. local tabi = {}
      149. for k,v in pairs(KG_sys.list)do
      150. if(v[1]==KG_sys.reg[plr:GetName()].name)then
      151. pleyr = 2
      152. table.insert(tabi, v[1])
      153. table.insert(tabi, v[2])
      154. break;
      155. end
      156. end
      157. if(pleyr==1)then
      158. plr:SendBroadcastMessage("|cffff0000["..bhname.."]: |cff6666FFName: "..KG_sys.reg[plr:GetName()].name..", Gold: "..(KG_sys.reg[plr:GetName()].gold)..".")
      159. else
      160. plr:SendBroadcastMessage("|cffff0000["..bhname.."]: |cff6666FFName: "..tabi[1]..", Gold: "..(tabi[2]).." (+"..(KG_sys.reg[plr:GetName()].gold)..").")
      161. end
      162. end
      163. if(id==6)then
      164. if(KG_sys.reg[plr:GetName()].name~=nil)and(KG_sys.reg[plr:GetName()].name~="none")then
      165. if(KG_sys.reg[plr:GetName()].gold~=nil)and(KG_sys.reg[plr:GetName()].gold~=0)then
      166. if(KG_sys.reg[plr:GetName()].gold>=MINIMUM)then
      167. if(KG_sys.reg[plr:GetName()].gold<=MAXIMUM)then
      168. if(KG_sys.reg[plr:GetName()].gold<=plr:GetCoinage()/10000)then
      169. plr:GossipComplete()
      170. plr:DealGoldCost(KG_sys.reg[plr:GetName()].gold*10000)
      171. KG_sys.register_player(plr)
      172. else
      173. plr:SendBroadcastMessage("|cffff0000["..bhname.."]: |R|cff6666FF"..message8.."|R")
      174. unt:GossipSendMenu(plr)
      175. end
      176. else
      177. plr:SendBroadcastMessage("|cffff0000["..bhname.."]: |R|cff6666FF"..message20.."|R")
      178. unt:GossipSendMenu(plr)
      179. end
      180. else
      181. plr:SendBroadcastMessage("|cffff0000["..bhname.."]: |R|cff6666FF"..message19.."|R")
      182. unt:GossipSendMenu(plr)
      183. end
      184. else
      185. plr:SendBroadcastMessage("|cffff0000["..bhname.."]: |R|cff6666FF"..message9.."|R")
      186. unt:GossipSendMenu(plr)
      187. end
      188. else
      189. plr:SendBroadcastMessage("|cffff0000["..bhname.."]: |R|cff6666FF"..message10.."|R")
      190. unt:GossipSendMenu(plr)
      191. end
      192. end
      193. if(id==7)then
      194. unt:GossipSendMenu(plr)
      195. for k,v in pairs(KG_sys.list)do
      196. if(v[1]==plr:GetName())then
      197. plr:SendBroadcastMessage("|cffff0000["..bhname.."]: |R|cff6666FF"..string.gsub(message11, "COUNT", v[2]).."|R")
      198. break;
      199. end
      200. end
      201. end
      202. if(id==99)then
      203. plr:GossipComplete()
      204. end
      205. end
      206. RegisterUnitGossipEvent(BOUNTYHUNTER_NPCID,1,"BountyhunterNPC_Gossip")
      207. RegisterUnitGossipEvent(BOUNTYHUNTER_NPCID,2,"BountyhunterNPC_Select")
      208. ------------------------------------------------------------------------
      209. -------------------------Registersystem---------------------------------
      210. function KG_sys.register_player(plr)
      211. local plr2 = GetPlayer(KG_sys.reg[plr:GetName()].name)
      212. local pleyr = 1
      213. for k,v in pairs(KG_sys.list)do
      214. if(v[1]==KG_sys.reg[plr:GetName()].name)then
      215. pleyr = 2
      216. v[2] = v[2] + KG_sys.reg[plr:GetName()].gold
      217. local gold = WorldDBQuery("SELECT gold FROM "..sqltabname.." WHERE name='"..v[1].."';"):GetColumn(0):GetFloat()
      218. WorldDBQuery("UPDATE "..sqltabname.." SET gold='"..v[2].."' WHERE name='"..v[1].."';")
      219. plr:SendBroadcastMessage("|cffff0000["..bhname.."]: |R|cff6666FF"..message12.."|R")
      220. if(GetPlayer(KG_sys.reg[plr:GetName()].name))then
      221. plr2:SendBroadcastMessage("|cffff0000["..bhname.."]: |R|cff6666FF"..string.gsub(message13, "COUNT", v[2]).."|R")
      222. end
      223. break;
      224. end
      225. end
      226. if(pleyr==1)then
      227. KG_sys.list[table.getn(KG_sys.list)+1] = {KG_sys.reg[plr:GetName()].name, KG_sys.reg[plr:GetName()].gold}
      228. local intid = WorldDBQuery("SELECT MAX(id) FROM "..sqltabname..";"):GetColumn(0):GetByte() + 1
      229. WorldDBQuery("INSERT INTO "..sqltabname.." VALUES ('"..intid.."','"..KG_sys.reg[plr:GetName()].name.."','"..KG_sys.reg[plr:GetName()].gold.."');")
      230. plr:SendBroadcastMessage("|cffff0000["..bhname.."]: |R|cff6666FF"..message14.."|R")
      231. if(GetPlayer(KG_sys.reg[plr:GetName()].name))then
      232. plr2:SendBroadcastMessage("|cffff0000["..bhname.."]: |R|cff6666FF"..string.gsub(message15, "COUNT", KG_sys.reg[plr:GetName()].gold).."|R")
      233. end
      234. end
      235. KG_sys.reg[plr:GetName()] = nil
      236. end
      237. ------------------------------------------------------------------------
      238. -------------------------Serverhook-------------------------------------
      239. function BountyHunter_OnPlrKill(_, pKiller, pDie)
      240. for k,v in pairs(KG_sys.list)do
      241. if(v[1]==pDie:GetName())then
      242. pKiller:SendBroadcastMessage("|cffff0000["..bhname.."]: |R|cff6666FF"..message16.."|R")
      243. pDie:SendBroadcastMessage("|cffff0000["..bhname.."]: |R|cff6666FF"..message17.."|R")
      244. pKiller:DealGoldMerit(v[2]*10000)
      245. table.remove(KG_sys.list, k)
      246. WorldDBQuery("DELETE FROM "..sqltabname.." WHERE name='"..v[1].."';")
      247. break;
      248. end
      249. end
      250. end
      251. RegisterServerHook(2, "BountyHunter_OnPlrKill")
      252. if(WorldDBQuery("SELECT id FROM "..sqltabname..";")==nil)then
      253. WorldDBQuery("CREATE TABLE IF NOT EXISTS `"..sqltabname.."` (`id` int(6) unsigned NOT NULL DEFAULT '0',`name` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,`gold` int(6) unsigned NOT NULL DEFAULT '0',PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='BountyhunterNPC Table' AUTO_INCREMENT=1 ;")
      254. end
      255. print("Bounty NPC successfully loaded!")
      Display All

      Diese DB Struktur muss in eure world DB:


      C Source Code: bountyhunter_table.sql

      1. SET FOREIGN_KEY_CHECKS=0;
      2. -- ----------------------------
      3. -- Table structure for bountyhunter_table
      4. -- ----------------------------
      5. DROP TABLE IF EXISTS `bountyhunter_table`;
      6. CREATE TABLE `bountyhunter_table` (
      7. `id` int(6) unsigned NOT NULL DEFAULT '0',
      8. `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
      9. `gold` int(6) unsigned NOT NULL DEFAULT '0',
      10. PRIMARY KEY (`id`)
      11. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='BountyhunterNPC Table';
      Display All
      Viel Spass damit.
      mfg Batida :thumbup: