Guida System PVP (LUA & PYTHON)

Stato
Discussione chiusa ad ulteriori risposte.

FreddyRyk

Utente Electrum
11 Settembre 2014
415
23
123
191
Ultima modifica:
Salve ragazzi, dato che da giorni alcune persone mi chiedono il system pvp su skype ( il classico counter 3 2 1 e go ) ,visto e considerato la facilità nel trovarla non ho mai preteso denaro. Per questo motivo ho deciso di postare una guida (pubblica che si trova facilmente su internet..)
Decriptiamo "root" e aprire il file game.py
e Cerchiamo:
PHP:
MyShopPriceList
Aggiungete sotto:
Codice:
"demirvidgame" : self.demirvidgame,
"demirvid" : self.demirvid,
"demirstartgame" : self.demirstartgame,
"demirongame" : self.demirongame,
"demirendgame" : self.demirendgame,
"demirwsgame" : self.demirwsgame,
"demirwsvidgame" : self.demirwsgame,
"demirgogame" : self.demirgogame,
"demirgovidgame" : self.demirgogame,
"demirwingame" : self.demirwingame,

Una volta inserito controllate che sia composta così

image.jpg

Ora cercate :
PHP:
# END_OF_WEDDING
E aggiungete sotto:
Codice:
def demirvidgame(self, id):
import constInfo
constInfo.demirvidgame = int(id)

def demirongame(self):
constInfo.INPUT_IGNORE = 1

def demirendgame(self):
constInfo.INPUT_IGNORE = 0

def demirstartgame(self):
net.SendQuestInputStringPacket(str(constInfo.demir startgame))

def demirvid(self, id):
constInfo.demirvid = int(id)

def OpenQuestWindow(self, skin, idx):
if constInfo.INPUT_IGNORE == 1:
return
else:
self.interface.OpenQuestWindow(skin, idx)

def demirwsgame(self):
net.SendChatPacket("(demirwsgame)")
return

def demirgogame(self):
net.SendChatPacket("(demirgogame)")
return

def demirwingame(self):
net.SendChatPacket("(demirwingame)")
return

Deve essere impostata così

image.jpg


Ora salvare e chiudere
e aprite il file constinfo.py

Cercate:
PHP:
CONSOLE_ENABLE = 0
e inserite sotto :
Codice:
demirvidgame = 0
demirstartgame = 0
demirvid = 0
INPUT_IGNORE = 0

Salvate e chiudete
Ora aprite il file playersettingmodule.py

e cercate:
PHP:
(fish)

Aggiungete sotto:
Codice:
chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+12, "", "d:/ymir work/akiragame/demirgogame.mse")
net.RegisterEmoticonString("(demirgogame)")


chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+13, "", "d:/ymir work/akiragame/demirwsgame.mse")
net.RegisterEmoticonString("(demirwsgame)")

chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+14, "", "d:/ymir work/akiragame/demirwingame.mse")
net.RegisterEmoticonString("(demirwingame)")

Salvate e chiudete
Ora aprte il file uitarget.py

e sotto :
PHP:
import constInfo

aggiungete:
Codice:
import event

Ora cercate
PHP:
self.buttonDict[localeinfo.TARGET_BUTTON_AVENGE].SetEvent(ui.__mem_func__(self.OnPVP))

e Aggiungete sotto:
Per client 40k
Codice:
self.buttonDict[localeinfo.TARGET_BUTTON_FIGHT].SetEvent(ui.__mem_func__(self.demirwsgame))
self.buttonDict[localeinfo.TARGET_BUTTON_ACCEPT_FIGHT].SetEvent(ui.__mem_func__(self.demirgogame))
self.buttonDict[localeinfo.TARGET_BUTTON_AVENGE].SetEvent(ui.__mem_func__(self.demirgogame))

Per client 34k
Codice:
self.buttonDict[locale.TARGET_BUTTON_FIGHT].SetEvent(ui.__mem_func__(self.demirwsgame))
self.buttonDict[locale.TARGET_BUTTON_ACCEPT_FIGHT].SetEvent(ui.__mem_func__(self.demirgogame))
self.buttonDict[locale.TARGET_BUTTON_AVENGE].SetEvent(ui.__mem_func__(self.demirgogame))

Ora cercate:
PHP:
def OnPVP(self)

E sotto aggiungete:
Codice:
def demirwsgame(self):
net.SendChatPacket("/pvp %d" % (self.vid))
constInfo.demirstartgame = self.vid
event.QuestButtonClick(constInfo.demirvidgame)

def demirgogame(self):
constInfo.demirstartgame = self.vid
event.QuestButtonClick(constInfo.demirvid)

Deve uscire così.

image.jpg


Salvate e chiudete

Aprite Uichat.py

Cercate:
PHP:
def __SendChatPacket(self, text, type)

sotto aggiungete:
Codice:
demirgame = ["(demirgogame)","(demirwsgame)","(demirwingame)"]
for x in xrange(len(demirgame)):
if(text.find(demirgame[x]) != -1):
return

Deve uscire così :

image.jpg


Ora compiliamo la root
e apriamo l'index
e aggiungere:
Codice:
*
demirgame_pvpsystem
*

Scaricate:
https://mega.co.nz/#F!ZItWwYYY!FE2ybTOt5mpCleCfatin0Q
Ora lato server
Apriate il questlib.lua
e aggiungete:
Codice:
function setvarchar(name, var)
local laenge = string.len (var)
local setchar = 0
local save_name = 0
local letter = 0
while laenge > setchar do
setchar = setchar + 1
letter = string.sub (var, setchar, setchar)
letter = string.byte(letter, 1)
save_name = ""..name.."_char_"..setchar..""
pc.setqf(save_name, letter)
end
local save_laenge=""..name.."laenge"
pc.setqf(save_laenge, laenge)
end


function getvarchar(name)
local save_laenge = ""..name.."laenge"
local laenge = pc.getqf(save_laenge)
local save_name = 0
local var = ""
local letter = 0
local getchar = 0
while laenge > getchar do
getchar = getchar + 1
save_name = ""..name.."_char_"..getchar..""
letter = pc.getqf(save_name)
if letter!=0 then
letter = string.char(letter)
else
letter = ""
end
var = ""..var..""..letter..""
end
return var
end
Deve uscire così.

photolua.png


Ora aprite il questfunctions e aggiungere:
Codice:
setvarchar
getvarchar

E aggiungere queste due quest.

https://mega.co.nz/#!MENgyCbR!zCvTP98FiFnPKVF7mP2PB8FrJ-OPyiiMiwDTzyhDTv8

https://mega.co.nz/#!gd0BQLiC!MAiO_ddY7IsEifDleJJH6CNn0iCOpFCY17IDxJNpiNA

Video dimostrativo del system originale :



Ricordo che il system non è stato creato da me ed esistono molte guide su vari forum. Con qualche piccola modifica potreste migliorarlo.. io personalmente per divertimento ho cambiato il lato grafico e aumentato il counter a 10 secondi e inserito un tempo massimo al duello.. terminato il tempo vince chi ha più hp :3. Siete pregati non chiedermi più il system su skype. Grazie :D

Se "nascono "problemi con l'implementazione del system in questione, ci sono due motivi:
1) il vostro client non è buono
2) Avete inserito qualcosa in maniera errata.
In entrambi i casi per mancanza di tempo non do assistenza. Per risolvere eventuali errori esistono centinaia di guide sul lua e python, sforzate i neuroni e tutto si risolve. :D alla prossima.
 
Ci sono tipi che si prendono 10/15 "cocozze" per questo system, ma ancor di più gente che paga per un system pubblico. E' talmente facile da implementare che basta fare copia e incolla e prestare una particolare attenzione ad identare i codici . Tutto qui.
 
Ultima modifica:
Ho questo nel syserr:

1023 13:06:26738 :: AttributeError
1023 13:06:26738 :: :
1023 13:06:26738 :: 'TargetBoard' object has no attribute 'OnPVP'
1023 13:06:26738 ::

Hai detto di aggiungere sotto a def OnPVP(self) tutto quello e nello screen lo sovrascrivi...

Ah e un'altra cosa: gli archivi sono DANNEGGIATI.
 
E' molto utile per i player,
prima di ogni duello loro stessi dicono "3-2-1 go" ,
in questo modo è tutto automaticizzato e non c'è chi inizia prima o dopo.
 
Stato
Discussione chiusa ad ulteriori risposte.