Последние Файлы GTA 4
Последние Файлы GTA-MP
Реклама
Когда игрок сам умирает
DRAgoONoN Дата: Воскресенье, 02.03.2008, 17:18 | Сообщение # 1
Советчик
Группа:
Продвинутые
Сообщений: 1149
Награды:
2
Город: Одесса
Репутация:
102
Замечания:
0%
Статус:
Помогите, у меня в моде когда игрок сам умирает то не показывается справа экрана в убийствах: Code
public OnPlayerDeath(playerid, killerid, reason) { new KillSpreeName[30], ksmsg[256] ; if(GetPlayerScore(killerid) ==25) { GetPlayerName(killerid, KillSpreeName, 30); SendClientMessageToAll(COLOR_RED,"____________________________"); format(ksmsg, 256, " %s киллер, он убил 25 игроков!", KillSpreeName); SendClientMessageToAll(GetPlayerColor(killerid), ksmsg); } else if(GetPlayerScore(killerid) ==50) { GetPlayerName(killerid, KillSpreeName, 30); SendClientMessageToAll(COLOR_RED,"____________________________"); format(ksmsg, 256, " %s профи, он убил 50 игроков!", KillSpreeName); SendClientMessageToAll(GetPlayerColor(killerid), ksmsg); } else if(GetPlayerScore(killerid) ==75) { GetPlayerName(killerid, KillSpreeName, 30); SendClientMessageToAll(COLOR_RED,"____________________________"); format(ksmsg, 256, " %s монстр, он убил 75 игроков!", KillSpreeName); SendClientMessageToAll(GetPlayerColor(killerid), ksmsg); } else if(GetPlayerScore(killerid) ==100) { GetPlayerName(killerid, KillSpreeName, 30); SendClientMessageToAll(COLOR_RED,"____________________________"); format(ksmsg, 256, " %s машина для убийств, он убил 100 игроков!", KillSpreeName); SendClientMessageToAll(GetPlayerColor(killerid), ksmsg); } MyDeaths[playerid]++; MyKills[killerid]++; if(killerid == INVALID_PLAYER_ID) { SendDeathMessage(INVALID_PLAYER_ID,playerid,reason); GameTextForPlayer(playerid,"~r~WASTED",1500,1); } else { //...тут не важно... // // Убийства if(gTeam[killerid] != gTeam[playerid]) { SendDeathMessage(killerid,playerid,reason); SetPlayerScore(killerid,GetPlayerScore(killerid)+1); GivePlayerMoney(killerid, 10000); GivePlayerMoney(playerid, -1000); GameTextForPlayer(killerid,"~r~OWNED",1500,1); GameTextForPlayer(playerid,"~r~WASTED",1500,1); } else { // Убийства своих TeamKills[killerid]++; new string[256],plname[MAX_PLAYER_NAME]; GetPlayerName(killerid, plname, MAX_PLAYER_NAME); format(string, sizeof(string), " %s нельзя убивать игроков из своей банды!", plname); SendClientMessage(killerid, 0xFFFF00AA, string); SendDeathMessage(killerid,playerid,reason); GivePlayerMoney(killerid, -1000); SetPlayerScore(killerid, GetPlayerScore(killerid) - 1); GameTextForPlayer(killerid,"~r~TEAM KILLER",5000,3); teamkillcount[killerid]++; if(teamkillcount[killerid] >= MAX_TEAMKILLS_FORJAIL) { SetPlayerPos(killerid,264.17,77.63,1001.04); SetPlayerInterior(killerid,6); ResetPlayerWeapons(playerid); SetTimerEx("jailrelease",JAIL_TIME_LENGTH,0,"d",killerid); IsPlayerInJail[killerid] = 1; GivePlayerMoney(killerid, -2000); } if(teamkillcount[killerid] >= MAX_TEAMKILLS) { new teamkillername[30], tkmsg[256]; GetPlayerName(killerid, teamkillername, 30); format(tkmsg, 256, " %s был кикнут с сервера за убийства игроков его банды!", teamkillername); SendClientMessageToAll(COLOR_RED, tkmsg); SendClientMessage(killerid, COLOR_RED, " Вы кикнуты с сервера за убийства игроков вашей банды!"); Kick(killerid); } } } return 1; } forward jailrelease(killerid); public jailrelease(killerid) { SpawnPlayer(killerid); SetPlayerInterior(killerid,0); IsPlayerInJail[killerid] = 0; ResetPlayerWeapons(killerid); GivePlayerWeapon(killerid,24,300); }
SAMP WIKI
Сообщение отредактировал DRAgoONoN - Воскресенье, 02.03.2008, 17:19
DarkByte Дата: Воскресенье, 02.03.2008, 17:26 | Сообщение # 2
Долгожитель
Группа:
Продвинутые
Сообщений: 1577
Награды:
7
Город: Челябинск
Репутация:
182
Замечания:
0%
Статус:
Чёта тут много всего, читать лень, вобщем в начале OnPlayerDeath добавь: Code
if (killerid == INVALID_PLAYER_ID) {SendDeathMessage(INVALID_PLAYER_ID,playerid,reason);return 1;}
MusicSig vkontakte - расширение функционала ВКонтакте для Google Chrome
DRAgoONoN Дата: Воскресенье, 02.03.2008, 18:01 | Сообщение # 3
Советчик
Группа:
Продвинутые
Сообщений: 1149
Награды:
2
Город: Одесса
Репутация:
102
Замечания:
0%
Статус:
Есле вставляю то выдает много ошибок, а эти строки у меня есть: Code
} MyDeaths[playerid]++; MyKills[killerid]++; if(killerid == INVALID_PLAYER_ID) { SendDeathMessage(INVALID_PLAYER_ID,playerid,reason); GameTextForPlayer(playerid,"~r~WASTED",1500,1); } else {
Вот часть...так что не так ?
SAMP WIKI
DarkByte Дата: Воскресенье, 02.03.2008, 18:15 | Сообщение # 4
Долгожитель
Группа:
Продвинутые
Сообщений: 1577
Награды:
7
Город: Челябинск
Репутация:
182
Замечания:
0%
Статус:
Quote (DRAgoONoN )
Есле вставляю то выдает много ошибок, а эти строки у меня есть: Вот часть...так что не так ?
Прогони код и посмотри что будет, допустим игрок с ид 0 убивает сам себя public OnPlayerDeath(playerid==0 , killerid==255 , reason==0 ) if(GetPlayerScore(killerid==255 ) ==25) // я бы на месте сампа вылетел с ошибкой Access violation ... MyDeaths[playerid==0 ]++; MyKills[killerid==255 ]++; // Если размер массива MyKills == MAX_PLAYERS то выход за границы массива, я бы опять вылетел if(killerid == INVALID_PLAYER_ID) { SendDeathMessage(INVALID_PLAYER_ID,playerid,reason); GameTextForPlayer(playerid,"~r~WASTED",1500,1); } ... if(gTeam[killerid==255 ] != gTeam[playerid==0 ]) // и опять выход за границы массива, gTeam { и дальше куча возможных проблем с выполнением действий над игроком с id:255 Просто вынести свою обработку (killerid == INVALID_PLAYER_ID) в начало функции и сделай в её конце return 1;
MusicSig vkontakte - расширение функционала ВКонтакте для Google Chrome
Сообщение отредактировал De[M]oN - Воскресенье, 02.03.2008, 18:15
DRAgoONoN Дата: Воскресенье, 02.03.2008, 21:01 | Сообщение # 5
Советчик
Группа:
Продвинутые
Сообщений: 1149
Награды:
2
Город: Одесса
Репутация:
102
Замечания:
0%
Статус:
Огромное спс теперь все работает и код выглядит так: Code
public OnPlayerDeath(playerid, killerid, reason) { if(killerid == INVALID_PLAYER_ID) { SendDeathMessage(INVALID_PLAYER_ID,playerid,reason); GameTextForPlayer(playerid,"~r~WASTED",1500,1); MyDeaths[playerid]++; MyKills[killerid]++; return 1; } new KillSpreeName[30], ksmsg[256] ; if(GetPlayerScore(killerid) ==25) { GetPlayerName(killerid, KillSpreeName, 30); SendClientMessageToAll(COLOR_RED,"____________________________"); format(ksmsg, 256, " %s киллер, он убил 25 игроков!", KillSpreeName); SendClientMessageToAll(GetPlayerColor(killerid), ksmsg); } else if(GetPlayerScore(killerid) ==50) { GetPlayerName(killerid, KillSpreeName, 30); SendClientMessageToAll(COLOR_RED,"____________________________"); format(ksmsg, 256, " %s профи, он убил 50 игроков!", KillSpreeName); SendClientMessageToAll(GetPlayerColor(killerid), ksmsg); } else if(GetPlayerScore(killerid) ==75) { GetPlayerName(killerid, KillSpreeName, 30); SendClientMessageToAll(COLOR_RED,"____________________________"); format(ksmsg, 256, " %s монстр, он убил 75 игроков!", KillSpreeName); SendClientMessageToAll(GetPlayerColor(killerid), ksmsg); } else if(GetPlayerScore(killerid) ==100) { GetPlayerName(killerid, KillSpreeName, 30); SendClientMessageToAll(COLOR_RED,"____________________________"); format(ksmsg, 256, " %s машина для убийств, он убил 100 игроков!", KillSpreeName); SendClientMessageToAll(GetPlayerColor(killerid), ksmsg); } else {
SAMP WIKI
Сообщение отредактировал DRAgoONoN - Воскресенье, 02.03.2008, 21:12
DarkByte Дата: Понедельник, 03.03.2008, 06:45 | Сообщение # 6
Долгожитель
Группа:
Продвинутые
Сообщений: 1577
Награды:
7
Город: Челябинск
Репутация:
182
Замечания:
0%
Статус:
Quote (DRAgoONoN )
Огромное спс теперь все работает и код выглядит так: public OnPlayerDeath(playerid, killerid, reason) { if(killerid == INVALID_PLAYER_ID) { SendDeathMessage(INVALID_PLAYER_ID,playerid,reason); GameTextForPlayer(playerid,"~r~WASTED",1500,1); MyDeaths[playerid]++; MyKills[killerid]++; return 1; }
Странно что оно работает Строка отмеченная красным явно лишняя
MusicSig vkontakte - расширение функционала ВКонтакте для Google Chrome