Oduzimanje novca nakon smrti

Započeo marko1rp, Maj 22, 2019, 10:08:06 PRE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Problem(error/warning): uopšteno
Deo skripte:
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]);
}

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.

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

Mnogo imaš ti još da jedeš kačamak.
skrr
Moj tutorijali: Bazilion indent warninga
WORK? : Smart Project 1.2 , Leskovacki Detmec, Rodjendanski  server


Penzionisani balkanski samp kripter


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.
{
        cache_get_value_int(0, "money", playerInfo[playerid][pMoney]);   
        setPlayerMoney(playerid, playerInfo[playerid][pMoney]);
}



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

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


Poslednja Izmena: Maj 22, 2019, 11:50:35 PRE PODNE od marko1rp

Cekaj, stani znaci tebi kad umres oduzme 100$ ili?

Mnogo imaš ti još da jedeš kačamak.
skrr
Moj tutorijali: Bazilion indent warninga
WORK? : Smart Project 1.2 , Leskovacki Detmec, Rodjendanski  server


Penzionisani balkanski samp kripter


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.
Poslednja Izmena: Maj 22, 2019, 12:17:03 POSLE PODNE od marko1rp

Meni se to nikad nije desilo, ili nisam primetio

Mnogo imaš ti još da jedeš kačamak.
skrr
Moj tutorijali: Bazilion indent warninga
WORK? : Smart Project 1.2 , Leskovacki Detmec, Rodjendanski  server


Penzionisani balkanski samp kripter


Nisi primetio, probaj.

#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;
}

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
public OnPlayerDeath(playerid, killerid, reason)
{
GivePlayerMoney( playerid, quantity /*u tvom slucaju je 100*/ ); return ( true );
}
• Website: www.vasic.dev
Web Development & Cyber Security