Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: rOLDen poslato Februar 15, 2020, 18:31:11 POSLE PODNE

Naslov: Scriptfiles
Poruka od: rOLDen poslato Februar 15, 2020, 18:31:11 POSLE PODNE
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 (https://imgur.com/iMZrx0g), Slika podataka kuće (https://imgur.com/jiZyZ7D).
Naslov: Odg: Scriptfiles
Poruka od: V01D poslato Februar 15, 2020, 20:12:29 POSLE PODNE
Daj komandu gde igrac kupi kucu
Naslov: Odg: Scriptfiles
Poruka od: rOLDen poslato Februar 15, 2020, 21:35:15 POSLE PODNE

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...
Naslov: Odg: Scriptfiles
Poruka od: rOLDen poslato Februar 19, 2020, 18:37:54 POSLE PODNE
*Bump

Jel netko zna? Nisam ja jos pokusavo rjesiti problem.
Naslov: Odg: Scriptfiles
Poruka od: daddyDOT poslato Februar 19, 2020, 18:40:07 POSLE PODNE
Imaš li
[pawn]HouseInfo[hOwner]
HouseInfo[hOwned][/pawn]
pod SaveHouse?
Naslov: Odg: Scriptfiles
Poruka od: rOLDen poslato Februar 20, 2020, 14:59:35 POSLE PODNE
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;
}

Naslov: Odg: Scriptfiles
Poruka od: V01D poslato Februar 20, 2020, 19:15:24 POSLE PODNE
Umesto ovoga:
[pawn]HouseInfo[hOwner] = Ime(playerid);[/pawn]
Probaj stavi:
[pawn]strmid(HouseInfo[hOwner], Ime(playerid), 0, strlen(Ime(playerid)), 255);[/pawn]
Naslov: Odg: Scriptfiles
Poruka od: algorhitmically poslato Februar 20, 2020, 19:25:38 POSLE PODNE
[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]
Naslov: Odg: Scriptfiles
Poruka od: rOLDen 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?
Naslov: Odg: Scriptfiles
Poruka od: over poslato Februar 21, 2020, 01:17:15 PRE PODNE
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
Naslov: Odg: Scriptfiles
Poruka od: Ljubiša poslato Februar 21, 2020, 06:22:37 PRE PODNE
Citat: !OverLord poslato Februar 21, 2020, 01:17:15 PRE PODNE
hahahaahahah skini lepo neki mod od Mume i pogledaj sve

Mumin je mysql njemu treba y_ini...
Naslov: Odg: Scriptfiles
Poruka od: rOLDen poslato Februar 21, 2020, 14:21:25 POSLE PODNE
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?
Naslov: Odg: Scriptfiles
Poruka od: 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
Naslov: Odg: Scriptfiles
Poruka od: rOLDen poslato Februar 21, 2020, 14:39:06 POSLE PODNE
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:
(https://i.imgur.com/Hf3ZmMV.png)

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.
Naslov: Odg: Scriptfiles
Poruka od: rOLDen poslato Februar 24, 2020, 12:42:34 POSLE PODNE
*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.
Naslov: Odg: Scriptfiles
Poruka od: Ejs poslato Februar 24, 2020, 15:25:06 POSLE PODNE
Citat: Aaron poslato Februar 20, 2020, 22:18:00 POSLE PODNE
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.

Ako ne sacuva kada se kućni server gasi, jel bi se moglo staviti SaveHouse na OnGameModeExit?
Ili tako nesto
Naslov: Odg: Scriptfiles
Poruka od: rOLDen poslato Februar 27, 2020, 20:19:02 POSLE PODNE
Citat: Ejs poslato Februar 24, 2020, 15:25:06 POSLE PODNE
Ako ne sacuva kada se kućni server gasi, jel bi se moglo staviti SaveHouse na OnGameModeExit?
Ili tako nesto
Nije u tome problem iz razloga sto koji god gamemod skinuo podatci se ne spremaju nakon gasenja.
Naslov: Odg: Scriptfiles
Poruka od: rOLDen poslato Februar 27, 2020, 21:55:02 POSLE PODNE
Ispričavam se na duplom postu.

Je li moguće da je problem u tome što sam nedavno instalirao novu verziju sampa a gm ne podrzava istu?
Naslov: Odg: Scriptfiles
Poruka od: Arkoo poslato Mart 01, 2020, 12:05:45 POSLE PODNE
Probaj pokrenuti samp-server.exe kao administrator i vidi da li ce se onda sacuvati