SA-MP Forums Archive
Не передаются деньги - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Не передаются деньги (/showthread.php?tid=281089)



Не передаются деньги - Diman777 - 04.09.2011

Помогите решить следующую проблему.
Когда игрок убивает другого игрока ему не зачисляются деньги.
Т.е. к примеру я убил игрока и мне не передались его деньги.
Какая переменная должна быть я не знаю.


Re: Не передаются деньги - -Stranger- - 04.09.2011

У Вас ошибка на строчке 1159.

PS> код OnPlayerDeath давай.


Re: Не передаются деньги - HappyScripter - 04.09.2011

Quote:
Originally Posted by Diman777
Посмотреть сообщение
Помогите решить следующую проблему.
Когда игрок убивает другого игрока ему не зачисляются деньги.
Т.е. к примеру я убил игрока и мне не передались его деньги.
Какая переменная должна быть я не знаю.
Покажите код или его часть отвечающую за передачу денег. Возможно, если есть античит или вариант серверных денег, то этот механизм блокирует передачу денег.


Re: Не передаются деньги - Diman777 - 04.09.2011

вот код:
pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
    new PlayerNameva[MAX_PLAYER_NAME];
    new PlayerNamevam[MAX_PLAYER_NAME];
    new stringkilllist[100];
    new stringkilllist1[100];
    new playercash;
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    plafk[playerid] = -2;
    death[playerid]++;
    c_stat[playerid][Deaths]++;//1є Deaths - Warning! Shift the sequency will result in problems.
    c_stat[killerid][Kills]++;//2є Kills
    ResetPlayerMoney(playerid);
    for(new x=0; x<MAX_PLAYERS; x++)
    {
        if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && gSpectateID[x] == playerid)
        {
           AdvanceSpectate(x);
        }
    }
    if(playerid == playerid)
    {
        GetPlayerName(playerid,PlayerNameva,sizeof(PlayerNameva));
        format(stringkilllist1,sizeof(stringkilllist1),"%s (%d)",PlayerNameva,playerid); // форматируем ник, вставляя после него ID
        SetPlayerName(playerid,stringkilllist1); // выставляем имя с ID
        SendDeathMessage(INVALID_PLAYER_ID,playerid,reason);
        SetPlayerName(playerid,PlayerNameva); // возвращаем имя без ID
        ResetPlayerMoney(playerid);
    }
    if(killerid == INVALID_PLAYER_ID)
    {
        GetPlayerName(playerid,PlayerNameva,sizeof(PlayerNameva));
        format(stringkilllist1,sizeof(stringkilllist1),"%s (%d)",PlayerNameva,playerid); // форматируем ник, вставляя после него ID
        SetPlayerName(playerid,stringkilllist1); // выставляем имя с ID
        SendDeathMessage(INVALID_PLAYER_ID,playerid,reason);
        SetPlayerName(playerid,PlayerNameva); // возвращаем имя без ID
        ResetPlayerMoney(playerid);
        }
        else
        {
        GetPlayerName(killerid,PlayerNamevam,sizeof(PlayerNamevam));
        GetPlayerName(playerid,PlayerNameva,sizeof(PlayerNameva));
        format(stringkilllist,sizeof(stringkilllist),"%s (%d)",PlayerNamevam,killerid); // форматируем ник, вставляя после него ID
        format(stringkilllist1,sizeof(stringkilllist1),"%s (%d)",PlayerNameva,playerid); // форматируем ник, вставляя после него ID
        SetPlayerName(killerid,stringkilllist); // выставляем имя с ID
        SetPlayerName(playerid,stringkilllist1); // выставляем имя с ID
        SendDeathMessage(killerid,playerid,reason);
        SetPlayerName(playerid,PlayerNameva); // возвращаем имя без ID
        SetPlayerName(killerid,PlayerNamevam); // возвращаем имя без ID
        SetPlayerName(playerid,name); // возвращаем имя без ID
        SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
        playercash = GetPlayerMoney(playerid);
        if (playercash > 0)
        {
            GivePlayerMoney(killerid, playercash);
            PlayerInfo[killerid][pKill] = PlayerInfo[killerid][pKill] + 1;
            ResetPlayerMoney(playerid);
        }
        else
        {
        }
    }
    if((reason != 255) || (killerid != 255))
    {
    new string[128], pname[24];
    GetPlayerName(killerid,pname,24);
    format(string,128,"Убит игроком %s (%d) ",pname, killerid);
    SetPlayerChatBubble(playerid, string, COLOR_P45, 50.0, 10000);
    }
    SetPlayerName(playerid,name); // возвращаем имя без ID
    return 1;
}
А античит на деньги есть, может из-за него


Re: Не передаются деньги - -Stranger- - 04.09.2011

Ну первое что кинулось в глаза это: if(playerid == playerid)


Re: Не передаются деньги - HappyScripter - 04.09.2011

верно, проблема в этом блоке

PHP код:
    if(playerid == playerid)
    {
        
GetPlayerName(playerid,PlayerNameva,sizeof(PlayerNameva));
        
format(stringkilllist1,sizeof(stringkilllist1),"%s (%d)",PlayerNameva,playerid); // форматируем ник, вставляя после него ID
        
SetPlayerName(playerid,stringkilllist1); // выставляем имя с ID
        
SendDeathMessage(INVALID_PLAYER_ID,playerid,reason);
        
SetPlayerName(playerid,PlayerNameva); // возвращаем имя без ID
        
ResetPlayerMoney(playerid);
    } 
b последняя строчка в нем всегда отнимает у игрока playerid все деньги, поэтому вот здесь

PHP код:
        playercash GetPlayerMoney(playerid);
        if (
playercash 0)
        {
            
GivePlayerMoney(killeridplayercash);
            
PlayerInfo[killerid][pKill] = PlayerInfo[killerid][pKill] + 1;
            
ResetPlayerMoney(playerid);
        }
        else
        {
        } 
playercash всегда равен 0 и передача денег никогда не будет работать. А что это за проверка?

PHP код:
if(playerid == playerid
может так

PHP код:
if(playerid == killerid



Re: Не передаются деньги - Diman777 - 04.09.2011

исправил на:
Quote:

if(playerid == killerid)

и также всё осталось
убил игрока и его деньги мне не передались
так может в античите на деньги ещё проблема?


Re: Не передаются деньги - HappyScripter - 04.09.2011

Опля, я не заметил, что ResetPlayerMoney(playerid); есть и выше в коде. Тогда

PHP код:
public OnPlayerDeath(playeridkilleridreason)
{
    new 
PlayerNameva[MAX_PLAYER_NAME];
    new 
PlayerNamevam[MAX_PLAYER_NAME];
    new 
stringkilllist[100];
    new 
stringkilllist1[100];
    new 
playercash;
    new 
name[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnamesizeof(name));
    
plafk[playerid] = -2;
    
death[playerid]++;
    
c_stat[playerid][Deaths]++;//1є Deaths - Warning! Shift the sequency will result in problems.
    
c_stat[killerid][Kills]++;//2є Kills
    //ResetPlayerMoney(playerid); // это здесь не нужно, блокирует передачу денег
    
for(new x=0x<MAX_PLAYERSx++)
    {
        if(
GetPlayerState(x) == PLAYER_STATE_SPECTATING && gSpectateID[x] == playerid)
        {
           
AdvanceSpectate(x);
        }
    }
    if(
playerid == killerid)
    {
        
GetPlayerName(playerid,PlayerNameva,sizeof(PlayerNameva));
        
format(stringkilllist1,sizeof(stringkilllist1),"%s (%d)",PlayerNameva,playerid); // форматируем ник, вставляя после него ID
        
SetPlayerName(playerid,stringkilllist1); // выставляем имя с ID
        
SendDeathMessage(INVALID_PLAYER_ID,playerid,reason);
        
SetPlayerName(playerid,PlayerNameva); // возвращаем имя без ID
        
ResetPlayerMoney(playerid);
    }
    if(
killerid == INVALID_PLAYER_ID)
    {
        
GetPlayerName(playerid,PlayerNameva,sizeof(PlayerNameva));
        
format(stringkilllist1,sizeof(stringkilllist1),"%s (%d)",PlayerNameva,playerid); // форматируем ник, вставляя после него ID
        
SetPlayerName(playerid,stringkilllist1); // выставляем имя с ID
        
SendDeathMessage(INVALID_PLAYER_ID,playerid,reason);
        
SetPlayerName(playerid,PlayerNameva); // возвращаем имя без ID
        
ResetPlayerMoney(playerid);
    }
    else
    {
        
GetPlayerName(killerid,PlayerNamevam,sizeof(PlayerNamevam));
        
GetPlayerName(playerid,PlayerNameva,sizeof(PlayerNameva));
        
format(stringkilllist,sizeof(stringkilllist),"%s (%d)",PlayerNamevam,killerid); // форматируем ник, вставляя после него ID
        
format(stringkilllist1,sizeof(stringkilllist1),"%s (%d)",PlayerNameva,playerid); // форматируем ник, вставляя после него ID
        
SetPlayerName(killerid,stringkilllist); // выставляем имя с ID
        
SetPlayerName(playerid,stringkilllist1); // выставляем имя с ID
        
SendDeathMessage(killerid,playerid,reason);
        
SetPlayerName(playerid,PlayerNameva); // возвращаем имя без ID
        
SetPlayerName(killerid,PlayerNamevam); // возвращаем имя без ID
        
SetPlayerName(playerid,name); // возвращаем имя без ID
        
SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
        
playercash GetPlayerMoney(playerid);
        if (
playercash 0)
        {
            
GivePlayerMoney(killeridplayercash);
            
PlayerInfo[killerid][pKill] = PlayerInfo[killerid][pKill] + 1;
            
ResetPlayerMoney(playerid);
        }
        else
        {
        }
    }
    if((
reason != 255) || (killerid != 255))
    {
    new 
string[128], pname[24];
    
GetPlayerName(killerid,pname,24);
    
format(string,128,"Убит игроком %s (%d) ",pnamekillerid);
    
SetPlayerChatBubble(playeridstringCOLOR_P4550.010000);
    }
    
SetPlayerName(playerid,name); // возвращаем имя без ID
    
return 1;




Re: Не передаются деньги - -Stranger- - 04.09.2011

HappyScripter, неуспел я =)