Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: marko1rp poslato Maj 22, 2019, 10:08:06 PRE PODNE

Naslov: Oduzimanje novca nakon smrti
Poruka od: marko1rp poslato Maj 22, 2019, 10:08:06 PRE PODNE
Problem(error/warning): uopšteno
Deo skripte:
[pawn]
public OnPlayerDeath(playerid, killerid, reason)
   return 1;

stock SetPlayerMoney(pid, mny) {
   ResetPlayerMoney(pid);
   GivePlayerMoney(pid, mny);
   return 1;
}

// i ovo je ukoliko je password dobar
{
        cache_get_value_int(0, "money", playerInfo[playerid][pMoney]);   
        setPlayerMoney(playerid, playerInfo[playerid][pMoney]);
}


[/pawn]
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log):
Slika/video ingame problema(obavezno ako je ingame problem):

Znači oduzima se $100 nakon svake smrti.
Skripta je od 0, neću da dodajem 100$ sa GivePlayerMoney nakon smrti, gledao sam mnogo skripti na balkan-samp-u, forum.sa-mp-u, ni u jednoj nisam video da je to neko radio, takoÄ'e, dosta sam googlovao vezano za ovaj problem, ne naÄ'em reÅ¡enje koje pomaže, a da je kako treba.
Naslov: Odg: Oduzimanje novca nakon smrti
Poruka od: bunta poslato Maj 22, 2019, 11:39:30 PRE PODNE
public OnPlayerDeath(playerid, killerid, reason)
return 1;

return ti prekida funkciju, tako da ti ovaj kod ispod ne vazi.
stock SetPlayerMoney(pid, mny) {
ResetPlayerMoney(pid);
GivePlayerMoney(pid, mny);

Ovo stavi van pablika onplayerdeath

{
        cache_get_value_int(0, "money", playerInfo[playerid][pMoney]);   
        setPlayerMoney(playerid, playerInfo[playerid][pMoney]);
}

Ovo je za ucitavanje iz baze, ne za upisivanje.
public OnPlayerDeath(playerid,killerid,reason)
{
SetPlayerMoney(playerid,GetPlayerMoney(playerid)-100);
new query[64];
mysql_format(handle, query, sizeof(query), "UPDATE imetablezaigrace SET money=`%d` WHERE id=`%d`", playerInfo[playerid][pMoney], playerInfo[playerid][pSQLID]);
mysql_tquery(handle, query);
return 1;
}

Ja bi ovako uradio, ne kazem da je najbolje ali to je ono sto sam mogo da sklepam ovde na poso za ovih 3 minuta xd
Naslov: Odg: Oduzimanje novca nakon smrti
Poruka od: marko1rp poslato Maj 22, 2019, 11:45:41 PRE PODNE
Argh, nisi me razumeo.
Ja neću da mi se oduzima -100 koji se oduzimaju po defaultu.

OnPlayerDeath sam okačio da se vidi da se u tom callbacku ne poziva oduzimanje novca.


Ovo jeste izvan OnPlayerDeath, logično, nalazi se u u funkciji koja se poziva ukoliko je sifra dobra.
[pawn]
{
        cache_get_value_int(0, "money", playerInfo[playerid][pMoney]);   
        setPlayerMoney(playerid, playerInfo[playerid][pMoney]);
}
[/pawn]


A ovo je funkcija sama za sebe, return u OnPlayerDeath nema veze sa njom

[pawn]
stock SetPlayerMoney(pid, mny) {
   ResetPlayerMoney(pid);
   GivePlayerMoney(pid, mny);
   return 1;
}
[/pawn]

Naslov: Odg: Oduzimanje novca nakon smrti
Poruka od: bunta poslato Maj 22, 2019, 12:13:00 POSLE PODNE
Cekaj, stani znaci tebi kad umres oduzme 100$ ili?
Naslov: Odg: Oduzimanje novca nakon smrti
Poruka od: marko1rp poslato Maj 22, 2019, 12:15:02 POSLE PODNE
Da, i vidim da nisam jedini sa tim problemom.
ÄŒitam po sampovom forumu da je to po default-u tako.

Ja sam zbog toga okačio OnPlayerDeath da se vidi da ja oduzimanje ne pozivam nigde.
Naslov: Odg: Oduzimanje novca nakon smrti
Poruka od: bunta poslato Maj 22, 2019, 12:40:10 POSLE PODNE
Meni se to nikad nije desilo, ili nisam primetio
Naslov: Odg: Oduzimanje novca nakon smrti
Poruka od: marko1rp poslato Maj 22, 2019, 13:00:54 POSLE PODNE
Nisi primetio, probaj.

[pawn]
#include a_samp
#include YSI\y_commands

main(){}

public OnGameModeInit() {
   ShowPlayerMarkers(PLAYER_MARKERS_MODE_OFF);
   UsePlayerPedAnims();
   EnableStuntBonusForAll(0);
   DisableInteriorEnterExits();
   ShowPlayerMarkers(false);  SetNameTagDrawDistance(30); AllowInteriorWeapons(1);
   return 1;
}

public OnGameModeExit() {
   return 1;
}

public OnPlayerConnect(playerid) {
   ResetPlayerMoney(playerid);
   GivePlayerMoney(playerid, 10000);
   SetSpawnInfo( playerid, 0, 0, 2852.2173,1824.4058,10.7575, 0.0, 0, 0, 0, 0, 0, 0 );
   SpawnPlayer(playerid);
   return 1;
}

public OnPlayerSpawn(playerid) {
    SetPlayerColor(playerid, 0xE3E3E3FF);
}

public OnPlayerDeath(playerid, killerid, reason)
   return 1;

public OnPlayerCommandText(playerid,cmdtext[])
   return 1;
   
public e_COMMAND_ERRORS:OnPlayerCommandReceived(playerid, cmdtext[], e_COMMAND_ERRORS:success)
{
    if (success == COMMAND_UNDEFINED) SendClientMessage(playerid,-1,"Komanda ne postoji!");
    return success;
}

YCMD:kill(playerid, params[], help)
{
   #pragma unused params
   #pragma unused help
   SetPlayerHealth(playerid, 0);
   return 1;
}

[/pawn]
Naslov: Odg: Oduzimanje novca nakon smrti
Poruka od: Vasic poslato Maj 22, 2019, 18:41:54 POSLE PODNE
Meni se to nikad nije desilo, skriptam skoro punih 4 godine, to mi se uopste nije desilo.
Ako ti nista ne poziva u OnPlayerDeath, a vidim da ne poziva, i oduzima ti 100$ na svakom Deathu, jednostavno stavi samo
[pawn]public OnPlayerDeath(playerid, killerid, reason)
{
GivePlayerMoney( playerid, quantity /*u tvom slucaju je 100*/ ); return ( true );
} [/pawn]