Skripta koju koristim:0
Detaljan opis problema:Kada kupik kucu komandom /kupikucu server padne(crash).Ovo se desava samo ako na hostu.Tacnije kada ima vise od 1 igraca.
Dio skripte:[pawn]CMD:kupikucu(playerid, params[])
{
new string[210];
new i = GetClosetHouseID(playerid);
if(Player[playerid][Houseid] != 999) return SCM(playerid,COLOR_RED,"Greska: "COL_WHITE"Vec imas kucu");
if(!IsPlayerInRangeOfPoint(playerid,5.0,House[EnterX],House[EnterY],House[EnterZ])) return SCM(playerid,COLOR_RED,"Nisi blizu kuce");
if(GetPlayerMoney(playerid) < House[Price]) return SCM(playerid, COLOR_RED, "Nemas toliko novca.");
if(GetPlayerScore(playerid) < House[Level]) return SCM(playerid, COLOR_RED, "Nemas dovoljan level da kupis ovu kucu");
format(House[Owner], 32, "%s", GetName(playerid));
if(House[hCar] > 0) format(HouseOwner[House[hCar]],64,"%s",GetName(playerid));
House[On_Sell] = 0;
Player[playerid][Houseid] = i;
DestroyDynamicPickup(House[PickupU]);
House[PickupU] = CreateDynamicPickup(1272, 23, House[EnterX],House[EnterY],House[EnterZ],-1,-1,-1,100.0);
GivePlayerMoney(playerid, -House[Price]);
DestroyDynamicMapIcon(House[Icon]);
House[Icon] = CreateDynamicMapIcon(House[EnterX],House[EnterY],House[EnterZ], 32, 0, -1, -1, -1, 100.0);
CheckHouse(i);
format(string,sizeof(string),"{E0BC1B}Vlasnik "COL_WHITE"%s\n{E0BC1B}Vrsta kuce: "COL_WHITE"%s\n{E0BC1B}Cena: "COL_WHITE"%d\n{E0BC1B}Level: "COL_WHITE"%d\n{E0BC1B}Rent Cena: "COL_WHITE"%d\n{E0BC1B}Adresa: "COL_WHITE"%s\n (/renthouse)",House[Owner],House[HouseName],House[Price],House[Level],House[RentPrice],House[Address]);
UpdateDynamic3DTextLabelText(House[DLabel],-1,string);
UpdatePlayerInformation(playerid);
return 1;
}[/pawn]
Neke slike/video za lakse dobivanje pomoci(neobavezno):/
Moze da bude da ti je do ZCMD
probaj zameni ovako to kupikucu
[pawn]YCMD:kupikucu(playerid, params[], help)
{
#pragma unused help
#pragma unused params[/pawn]
daj vamo takodje OnPlayerCommandReceived moguce da tu nesto ima...
Moguce da je do zcmd al ceo mod mi je na ZCMD da li ce smetati ako samo tu komandu prebacim u YCMD?
Citat: ShadowNET poslato Mart 26, 2016, 13:43:29 POSLE PODNE
Moguce da je do zcmd al ceo mod mi je na ZCMD da li ce smetati ako samo tu komandu prebacim u YCMD?
nece smetati, moras dodati onda i onaj parametar help, pogledaj OnPlayerCommandReceived ima li sta tu, ako nema onda dodaj debug na neku komandu i vidi gdje skripta kresuje...
Prebacio sam je u YCMD ali izbaci mi simbol is never used kupikucu.
Dodao sam help i #pragme.
Nisam ni jednom koristio funkciju OnPlayerCommandReceived tako da je ni nemam u modu
uzmi
probaj da stavis debug
Testirao sam sa debug (print) da vidim sta ce biti i testovi su sledeci.
Prvo komanndu sam ovako prepravio:
[pawn]CMD:kupikucu(playerid, params[])
{
printf("%s Unosi komandu kupi kucu", PlayerName(playerid));
new string[210];
new i = GetClosetHouseID(playerid);
if(Player[playerid][Houseid] != 999) return SCM(playerid,COLOR_RED,"Greska: "COL_WHITE"Vec imas kucu");
if(!IsPlayerInRangeOfPoint(playerid,5.0,House[EnterX],House[EnterY],House[EnterZ])) return SCM(playerid,COLOR_RED,"Nisi blizu kuce");
if(GetPlayerMoney(playerid) < House[Price]) return SCM(playerid, COLOR_RED, "Nemas toliko novca.");
if(GetPlayerScore(playerid) < House[Level]) return SCM(playerid, COLOR_RED, "Nemas dovoljan level da kupis ovu kucu");
print("Provere izvrsene komanda krece sa dodelom kuce");
format(House[Owner], 32, "%s", GetName(playerid));
if(House[hCar] > 0) format(HouseOwner[House[hCar]],64,"%s",GetName(playerid));
House[On_Sell] = 0;
Player[playerid][Houseid] = i;
print("Debug 1");
DestroyDynamicPickup(House[PickupU]);
House[PickupU] = CreateDynamicPickup(1272, 23, House[EnterX],House[EnterY],House[EnterZ],-1,-1,-1,100.0);
GivePlayerMoney(playerid, -House[Price]);
print("Debug 2");
DestroyDynamicMapIcon(House[Icon]);
House[Icon] = CreateDynamicMapIcon(House[EnterX],House[EnterY],House[EnterZ], 32, 0, -1, -1, -1, 100.0);
CheckHouse(i);
print("Debug 3");
format(string,sizeof(string),"{E0BC1B}Vlasnik "COL_WHITE"%s\n{E0BC1B}Vrsta kuce: "COL_WHITE"%s\n{E0BC1B}Cena: "COL_WHITE"%d\n{E0BC1B}Level: "COL_WHITE"%d\n{E0BC1B}Rent Cena: "COL_WHITE"%d\n{E0BC1B}Adresa: "COL_WHITE"%s\n (/renthouse)",House[Owner],House[HouseName],House[Price],House[Level],House[RentPrice],House[Address]);
UpdateDynamic3DTextLabelText(House[DLabel],-1,string);
print("Debug 4");
UpdatePlayerInformation(playerid);
print("Komanda uspesno izvrsena");
return 1;
}[/pawn]
E sad sta sam primetio kada kupim kucu pise da sam kupio kucu ali se ovaj 3Dtextlabel uopste ne promeni kao ni pickup.
Vec server padne i onda kada ga restartujem i udjem opet na server sve se lepo promeni.
Evo Server log sta se desavalo:
[pawn][11:57:41] Admin Unosi komandu kupi kucu
[11:57:51] Admin Unosi komandu kupi kucu
[11:58:04] Admin Unosi komandu kupi kucu
[11:58:04] Provere izvrsene komanda krece sa dodelom kuce
[11:58:04] Debug 1
[11:58:04] Debug 2
[11:58:04] Debug 3
[11:58:04] Debug 4[/pawn]
Kao sto se vidi neke stvari su se vise puta napisale.I poslednji print se nije ispisao...
Zna li neko kako ovo resiti?
daj public UpdatePlayerInformation
stock UpdatePlayerInformation(playerid)
{
new dFile[32];
format(dFile, 35, FILE_FOR_PLAYER, GetName(playerid));
new
INI:UserFile = INI_Open(dFile);
INI_WriteFloat(UserFile, "pSpawnX", Player[playerid][SpawnX]);
INI_WriteFloat(UserFile, "pSpawnY", Player[playerid][SpawnY]);
INI_WriteFloat(UserFile, "pSpawnZ", Player[playerid][SpawnZ]);
INI_WriteInt(UserFile, "pSpawn", Player[playerid][Spawn]);
INI_WriteInt(UserFile, "pSpawnInt", Player[playerid][SpawnInt]);
INI_WriteInt(UserFile, "pVW", Player[playerid][SpawnVW]);
INI_WriteInt(UserFile, "RobHouse", Player[playerid][RobHouse]);
INI_WriteInt(UserFile, "HouseID", Player[playerid][Houseid]);
INI_WriteInt(UserFile, "Bill", Player[playerid][Min]);
INI_Close(UserFile);
}
Hmm, probaj ovo ubaciti pa ako ti ovet crashuje, onda mi posalji iz loga sta je napisalo: [pawn]stock UpdatePlayerInformation(playerid) {
new dFile[64];
format(dFile, 64, FILE_FOR_PLAYER, GetName(playerid));
if(fexist(dFile)) {
newINI:UserFile = INI_Open(dFile);
print("debug1");
INI_WriteFloat(UserFile, "pSpawnX", Player[playerid][SpawnX]);
INI_WriteFloat(UserFile, "pSpawnY", Player[playerid][SpawnY]);
INI_WriteFloat(UserFile, "pSpawnZ", Player[playerid][SpawnZ]);
INI_WriteInt(UserFile, "pSpawn", Player[playerid][Spawn]);
INI_WriteInt(UserFile, "pSpawnInt", Player[playerid][SpawnInt]);
print("debug2");
INI_WriteInt(UserFile, "pVW", Player[playerid][SpawnVW]);
INI_WriteInt(UserFile, "RobHouse", Player[playerid][RobHouse]);
INI_WriteInt(UserFile, "HouseID", Player[playerid][Houseid]);
INI_WriteInt(UserFile, "Bill", Player[playerid][Min]);
print("debug3");
INI_Close(UserFile);
}
}[/pawn]
Komanda proradila.Radi skoro sve >:(
Medjutim ada kupim kucu stari pickup i textlabel se ne uniste nego ostanu a novi se pojave tako da na jednom mestu budu oba.
Citat: ShadowNET poslato Mart 27, 2016, 14:59:20 POSLE PODNE
Komanda proradila.Radi skoro sve >:(
Medjutim ada kupim kucu stari pickup i textlabel se ne uniste nego ostanu a novi se pojave tako da na jednom mestu budu oba.
pogledaj dali ih kreira streamer i dali ih on unistava...
Za text: UpdateDynamic3DTextLabelText
Za pickup DestroyDynamicPickup
CreateDynamicPickup
samo restartuj server i bice ti oke pickup
Znaci svaki put kada neko kupi kucu treba da restartujem server...
Fixed ;D
Moze lock
ps: Hvala Vuzimir-u na svo ulozeno vreme :)