Scriptfiles

Započeo rOLDen, Februar 15, 2020, 18:31:11 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 2 gostiju pregledaju ovu temu.

Problem(error/warning): vaš odgovor Napravio sam dinamičan sustav kreiranja kuća. Problem nastane kada kupim kuću. Točnije, u scriptfilesim nakon kupovine kuće u igračeve podatke server unese ID kuće koju posjeduje, no u podatcima kuće tog IDa server ne unese naziv vlasnika i mogućnost kupovine te iste kuće. Problem se nastavlja i u IG - kraj kuće i dalje stoji ikonica da se kuća može kupiti a ne da je kupljena. Igrač koji je kupio kuću može koristiti komande vezane za kuću (lock, sef...) a drugi igrači mogu istu kuću kupiti.
Dio skripte: Ukoliko vam bude potrebno, pošaljem naknadno dio skripte koji vam treba.
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): //
Slika/video ingame problema(obavezno ako je ingame problem): Slika igračevih statistika, Slika podataka kuće.

Daj komandu gde igrac kupi kucu


for(new b = 1; b < sizeof(HouseInfo); b++)
{
if(IsPlayerInRangeOfPoint(playerid, 3.0, HouseInfo[b][hEntranceX], HouseInfo[b][hEntranceY], HouseInfo[b][hEntranceZ]))
{
  if(PlayerInfo[playerid][pHouseID] >= 1) return SCM(playerid, COLOR_LIGHTRED, "ERROR: Ne mozete koristiti ovu komandu jer vec imate kucu.");
  if(PlayerInfo[playerid][pStanID] >= 1) return SCM(playerid, COLOR_LIGHTRED, "ERROR: Ne mozete koristiti ovu komandu jer vec imate stan.");
if(HouseInfo[b][hOwned] == 1) return SendClientMessage(playerid, COLOR_LIGHTRED, "ERROR: Ne mozete kupiti ovu kucu - vlasnik vec postoji.");
if(GetPlayerMoney(playerid) < HouseInfo[b][hPrice]) return SCM(playerid, COLOR_LIGHTRED, "ERROR: Ne mozete kupiti ovu kucu - nemate dovoljno novca.");
if(PlayerInfo[playerid][pScore] < HouseInfo[b][hLevel]) return SCM(playerid, COLOR_LIGHTRED, "ERROR: Ne mozete kupiti ovu kucu - nemate dovoljan level.");
acGivePlayerCash(playerid, -HouseInfo[b][hPrice]);
HouseInfo[b][hOwned] = 1;
HouseInfo[b][hOwner] = Ime(playerid);
PlayerInfo[playerid][pHouseID] = b;
DestroyDynamic3DTextLabel(HouseInfo[b][hLabel]);
new rentara[16];
if(HouseInfo[b][hRent] == 1) { rentara = "Omoguceno"; }
else if(HouseInfo[b][hRent] == 0) { rentara = "Onemoguceno"; }
format(string, 400, "{27FF00}Vlasnik kuce: %s\nPRITISNITE TIPKU 'F' ZA ULAZ", HouseInfo[b][hOwner]);
HouseInfo[b][hLabel] = CreateDynamic3DTextLabel(string, COLOR_BFUSION, HouseInfo[b][hEntranceX], HouseInfo[b][hEntranceY], HouseInfo[b][hEntranceZ], 50.0, INVALID_PLAYER_ID,INVALID_VEHICLE_ID, 1);
DestroyPickup(hOutsideIcon);
HouseInfo[b][hOutsideIcon] = CreateDynamicPickup(1318, 1, HouseInfo[b][hEntranceX], HouseInfo[b][hEntranceY], HouseInfo[b][hEntranceZ], HouseInfo[b][hWorld]);
SaveHouse(b);
SCM(playerid, COLOR_LIGHTGREEN, "INFO: Kupili ste kucu - sve komande mozete vidjeti na /help house.");
}
}


PS. Ovo je dio komande /buy koju koristim za više stvari, kao što je kupovina biznisa, stanova, kamp prikolica, auta...

*Bump

Jel netko zna? Nisam ja jos pokusavo rjesiti problem.

Imaš li
[pawn]HouseInfo[hOwner]
HouseInfo[hOwned][/pawn]
pod SaveHouse?

Citat: daddy. poslato Februar 19, 2020, 18:40:07 POSLE PODNE
Imaš li
[pawn]HouseInfo[hOwner]
HouseInfo[hOwned][/pawn]
pod SaveHouse?
Imam.

forward SaveHouse(id);
public SaveHouse(id)
{
    new file4[40];
    format(file4, sizeof(file4), HPATH, id);
    new INI:File = INI_Open(file4);
    INI_SetTag(File,"data");
    INI_WriteInt(File,"hOwned", HouseInfo[id][hOwned]);
    INI_WriteInt(File,"hPrice", HouseInfo[id][hPrice]);
    INI_WriteInt(File,"hRent", HouseInfo[id][hRent]);
    INI_WriteInt(File,"hRentPrice", HouseInfo[id][hRentPrice]);
    INI_WriteInt(File,"hDrugSafe", HouseInfo[id][hDrugSafe]);
    INI_WriteInt(File,"hMatsSafe", HouseInfo[id][hMatsSafe]);
    INI_WriteInt(File,"hAdrSafe", HouseInfo[id][hAdrSafe]);
    INI_WriteInt(File,"hMoneySafe", HouseInfo[id][hMoneySafe]);
    INI_WriteString(File,"hOwner", HouseInfo[id][hOwner]);
    INI_WriteInt(File, "hLevel", HouseInfo[id][hLevel]);
    INI_WriteInt(File,"hLocked", HouseInfo[id][hLocked]);
    INI_WriteFloat(File,"hEntranceX", HouseInfo[id][hEntranceX]);
    INI_WriteFloat(File,"hEntranceY", HouseInfo[id][hEntranceY]);
    INI_WriteFloat(File,"hEntranceZ", HouseInfo[id][hEntranceZ]);
    INI_WriteFloat(File,"hEntranceA", HouseInfo[id][hEntranceA]);
    INI_WriteFloat(File,"hExitX", HouseInfo[id][hExitX]);
    INI_WriteFloat(File,"hExitY", HouseInfo[id][hExitY]);
    INI_WriteFloat(File,"hExitZ", HouseInfo[id][hExitZ]);
    INI_WriteFloat(File,"hExitA", HouseInfo[id][hExitA]);
    INI_WriteInt(File,"hInt", HouseInfo[id][hInt]);
    INI_WriteInt(File,"hWorld", HouseInfo[id][hWorld]);
    INI_WriteInt(File,"hInsideInt", HouseInfo[id][hInsideInt]);
    INI_WriteInt(File,"hInsideWorld", HouseInfo[id][hInsideWorld]);
    INI_Close(File);
    return 1;
}


Priložit ću i učitavanje istih podataka:

forward loadhouse_data(ipx, name[], value[]);
public loadhouse_data(ipx, name[], value[])
{
    INI_Int("hOwned", HouseInfo[ipx][hOwned]);
    INI_Int("hPrice", HouseInfo[ipx][hPrice]);
    INI_Int("hRent", HouseInfo[ipx][hRent]);
    INI_Int("hRentPrice", HouseInfo[ipx][hRentPrice]);
    INI_Int("hDrugSafe", HouseInfo[ipx][hDrugSafe]);
    INI_Int("hMatsSafe", HouseInfo[ipx][hMatsSafe]);
    INI_Int("hAdrSafe", HouseInfo[ipx][hAdrSafe]);
    INI_Int("hMoneySafe", HouseInfo[ipx][hMoneySafe]);
    INI_String("hOwner", HouseInfo[ipx][hOwner], 24);
    INI_Int("hLocked", HouseInfo[ipx][hLocked]);
    INI_Float("hEntranceX", HouseInfo[ipx][hEntranceX]);
    INI_Float("hEntranceY", HouseInfo[ipx][hEntranceY]);
    INI_Float("hEntranceZ", HouseInfo[ipx][hEntranceZ]);
    INI_Float("hEntranceA", HouseInfo[ipx][hEntranceA]);
    INI_Float("hExitX", HouseInfo[ipx][hExitX]);
    INI_Float("hExitY", HouseInfo[ipx][hExitY]);
    INI_Float("hExitZ", HouseInfo[ipx][hExitZ]);
    INI_Float("hExitA", HouseInfo[ipx][hExitA]);
    INI_Int("hInt", HouseInfo[ipx][hInt]);
    INI_Int("hWorld", HouseInfo[ipx][hWorld]);
    INI_Int("hInsideInt", HouseInfo[ipx][hInsideInt]);
    INI_Int("hInsideWorld", HouseInfo[ipx][hInsideWorld]);
    return 1;
}


Umesto ovoga:
[pawn]HouseInfo[hOwner] = Ime(playerid);[/pawn]
Probaj stavi:
[pawn]strmid(HouseInfo[hOwner], Ime(playerid), 0, strlen(Ime(playerid)), 255);[/pawn]

[pawn]
for(new b = 1; b < sizeof(HouseInfo); b++){
    if(IsPlayerInRangeOfPoint(playerid, 3.0, HouseInfo[hEntranceX], HouseInfo[hEntranceY], HouseInfo[hEntranceZ])){
        if(PlayerInfo[playerid][pHouseID] >= 1) return SCM(playerid, COLOR_LIGHTRED, "ERROR: Ne mozete koristiti ovu komandu jer vec imate kucu.");
        if(PlayerInfo[playerid][pStanID] >= 1) return SCM(playerid, COLOR_LIGHTRED, "ERROR: Ne mozete koristiti ovu komandu jer vec imate stan.");
        if(HouseInfo[hOwned] == 1) return SendClientMessage(playerid, COLOR_LIGHTRED, "ERROR: Ne mozete kupiti ovu kucu - vlasnik vec postoji.");
        if(GetPlayerMoney(playerid) < HouseInfo[hPrice]) return SCM(playerid, COLOR_LIGHTRED, "ERROR: Ne mozete kupiti ovu kucu - nemate dovoljno novca.");
        if(PlayerInfo[playerid][pScore] < HouseInfo[hLevel]) return SCM(playerid, COLOR_LIGHTRED, "ERROR: Ne mozete kupiti ovu kucu - nemate dovoljan level.");
        acGivePlayerCash(playerid, -HouseInfo[hPrice]);
        HouseInfo[hOwned] = 1;
        //HouseInfo[hOwner] = Ime(playerid);   <--- ovo nije bas dobar nacin unosenja stringa.
        strcpy(HouseInfo, Ime(playerid)); // ili stavis strmid
        PlayerInfo[playerid][pHouseID] = b;
        DestroyDynamic3DTextLabel(HouseInfo[hLabel]);
        format(string, 400, "{27FF00}Vlasnik kuce: %s\nPRITISNITE TIPKU 'F' ZA ULAZ", HouseInfo[hOwner]);
        HouseInfo[hLabel] = CreateDynamic3DTextLabel(string, COLOR_BFUSION, HouseInfo[hEntranceX], HouseInfo[hEntranceY], HouseInfo[hEntranceZ], 50.0, INVALID_PLAYER_ID,INVALID_VEHICLE_ID, 1);
        DestroyPickup(hOutsideIcon);
        // Kada kreiras pickup za kucu, tj. kada ih ucitavas proveris da li je kuca kupljena i stavis razlicit pickup u odnosu na onaj koji bi bio da nije kupljena.
        HouseInfo[hOutsideIcon] = CreateDynamicPickup(1318, 1, HouseInfo[hEntranceX], HouseInfo[hEntranceY], HouseInfo[hEntranceZ], HouseInfo[hWorld]);
        SaveHouse(b);
        SavePlayer(playerid); // Sacuvaj stats igraca, jer si menjao podatke i oni moraju biti upisani, jer ne znam da li cuvas pri disconnectu.
        SCM(playerid, COLOR_LIGHTGREEN, "INFO: Kupili ste kucu - sve komande mozete vidjeti na /help house.");
    }

}
[/pawn]

Ako budes koristio strcpy i nemas ga predefinisanog:
[pawn]
stock strcpy(dest[], src[], size = sizeof(dest))
{
    dest[0] = EOS;
    return strcat(dest, src, size);
}
[/pawn]
[Include] > Optidraw
[Include] > Model-Sizes-SQL

Eh, ovako.

Ušao sam napokon u pawno i pokušao logički rješiti problem. Na kraju sam shvatio da mi se ista stvar događa i sa scriptfilesima od biznisa, auta, kamp prikolica...; koje sam također napravio na dynamic kreiranje. Problem vjerovatno datira od prošlog tjedna jer se sjećam kad sam pravio sustav dinamičnog kreiranja biznisa da nisam imao ovaj problem te da su se podatci vezani za biznise sačuvavali i učitavali u skladu nakon gašenja i paljenja servera.

Nakon toga sam skinuo drugi GM koji sačuva podatke nakon gašenja kućnog servera te shvatio da mi se ista stvar događa i na tom GM, iako ništa nisam editova.

Sad me zanima - jel mene neko zajebaje?

Citat: Aaron poslato Februar 20, 2020, 22:18:00 POSLE PODNE
Eh, ovako.

Ušao sam napokon u pawno i pokušao logički rješiti problem. Na kraju sam shvatio da mi se ista stvar događa i sa scriptfilesima od biznisa, auta, kamp prikolica...; koje sam također napravio na dynamic kreiranje. Problem vjerovatno datira od prošlog tjedna jer se sjećam kad sam pravio sustav dinamičnog kreiranja biznisa da nisam imao ovaj problem te da su se podatci vezani za biznise sačuvavali i učitavali u skladu nakon gašenja i paljenja servera.

Nakon toga sam skinuo drugi GM koji sačuva podatke nakon gašenja kućnog servera te shvatio da mi se ista stvar događa i na tom GM, iako ništa nisam editova.

Sad me zanima - jel mene neko zajebaje?
hahahaahahah skini lepo neki mod od Mume i pogledaj sve


Citat: Ljubisa poslato Februar 21, 2020, 06:22:37 PRE PODNE
Mumin je mysql njemu treba y_ini...
Imam y_ini.

Je li moguće da je problem u memoriji mog PCa odnosno da je pretrpan pa zbog toga više ne može sačuvati podatke i učitavat ih?

PS. Pregledao sam slične probleme u ovom pdfu i u većini slučajeva je bio taj razlog.

Ako je problem u tome, kako riješiti? Osloboditi memoriju na disku ili?

Upravo tako, mada ne verujem da je to problem. Ini fajlovi ne zauzimaju mnogo memorije, ali jedino mi to pada na pamet ukoliko ti nijedan drugi ne radi

Citat: V01D poslato Februar 21, 2020, 14:32:02 POSLE PODNE
Upravo tako, mada ne verujem da je to problem. Ini fajlovi ne zauzimaju mnogo memorije, ali jedino mi to pada na pamet ukoliko ti nijedan drugi ne radi
Slika PC memorije:


Nije u tome problem, očito. Problem je na generalnoj razini. Meni ništa ne pada na pamet do čega može biti. Ukoliko netko zna, neka mi objasni, bio bih zahvalan.

*bump

Ako unutar 24 h ne odgovori neko, možete lock jer očito nitko ne zna rješiti problem pa nema potrebe za otvorenom temom.