У меня такая проблема. Когда я бью другого персонажа, то у него не отнимается хп. ( У него нету гм )
В чём может быть проблема?
У меня такая проблема. Когда я бью другого персонажа, то у него не отнимается хп. ( У него нету гм )
В чём может быть проблема?
Подробнее опишите проблему, после чего появилась и что добавляли в мод - скидывайте. Просто так не может быть данной проблемы.
PHP код:
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)
{
if(issuerid != INVALID_PLAYER_ID)
{
if(StartTazer[issuerid] == true && weaponid == 0)
{
if(GetPlayerTazer[playerid] == true || GetPlayerCuff[playerid] == true || GetPlayerTie[playerid] == true || IsLaw(playerid) || IsArmy(playerid)) return true;
SetPlayerSpecialAction(playerid,SPECIAL_ACTION_HANDSUP);
TogglePlayerControllableEx(playerid, 0);
GetPlayerTazer[playerid] = true;
SetTimerEx("UnTazer", 15000, false,"i",playerid);
//
GetPlayerName(playerid, sn, sizeof(sn));
GetPlayerName(issuerid, gp, sizeof(gp));
new mes[128];
format(mes, sizeof(mes),"Вы ударили %s электрошокером", sn);
SendClientMessage(issuerid, COLOR_BLUE,mes);
format(mes, sizeof(mes), "%s ударил %s электрошокером", gp, sn);
ProxDetector(10.0, playerid, mes,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
return true;
}
else if((weaponid == 0 || weaponid == 1) && StartTazer[issuerid] == false)
{
new Float: red = float(PlayerInfo[issuerid][pBrunt])/1000.0;
new Float: health;
GetPlayerHealth(playerid, health);
SetPlayerHealthAC(playerid, health - red);
return true;
}
else if(weaponid == 5)
{
new Float: health;
GetPlayerHealth(playerid, health);
SetPlayerHealthAC(playerid, health - 20.0);
return true;
}
}
return true;
}
Код HTML:public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart) { if(issuerid != INVALID_PLAYER_ID) { if(StartTazer[issuerid] == true && weaponid == 0) { if(GetPlayerTazer[playerid] == true || GetPlayerCuff[playerid] == true || GetPlayerTie[playerid] == true || IsLaw(playerid) || IsArmy(playerid)) return true; SetPlayerSpecialAction(playerid,SPECIAL_ACTION_HANDSUP); TogglePlayerControllableEx(playerid, 0); GetPlayerTazer[playerid] = true; SetTimerEx("UnTazer", 15000, false,"i",playerid); // GetPlayerName(playerid, sn, sizeof(sn)); GetPlayerName(issuerid, gp, sizeof(gp)); new mes[128]; format(mes, sizeof(mes),"Вы ударили %s электрошокером", sn); SendClientMessage(issuerid, COLOR_BLUE,mes); format(mes, sizeof(mes), "%s ударил %s электрошокером", gp, sn); ProxDetector(10.0, playerid, mes,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE); return true; } else if(weaponid == 5) { new Float: health; GetPlayerHealth(playerid, health); SetPlayerHealthAC(playerid, health - 20.0); return true; } } return true; }
Trender (23.11.2014)
А так не лучше будет?
PHP код:
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)
{
if(issuerid != INVALID_PLAYER_ID || StartTazer[issuerid] != true && weaponid != 0) return 1;
if(GetPlayerTazer[playerid] == true || GetPlayerCuff[playerid] == true || GetPlayerTie[playerid] == true || IsLaw(playerid) || IsArmy(playerid)) return true;
SetPlayerSpecialAction(playerid,SPECIAL_ACTION_HANDSUP);
TogglePlayerControllableEx(playerid, 0);
GetPlayerTazer[playerid] = true;
SetTimerEx("UnTazer", 15000, false,"i",playerid);
GetPlayerName(playerid, sn, sizeof(sn));
GetPlayerName(issuerid, gp, sizeof(gp));
new mes[128];
format(mes, sizeof(mes),"Вы ударили %s электрошокером", sn);
SendClientMessage(issuerid, COLOR_BLUE,mes);
format(mes, sizeof(mes), "%s ударил %s электрошокером", gp, sn);
ProxDetector(10.0, playerid, mes,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
if(weaponid == 5)
{
new Float: health;
GetPlayerHealth(playerid, health);
SetPlayerHealthAC(playerid, health - 20.0);
return true;
}
return true;
}
теперь вот что в логах пишетPHP код:
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)
{
if(issuerid != INVALID_PLAYER_ID || StartTazer[issuerid] != true && weaponid != 0) return 1;
if(GetPlayerTazer[playerid] == true || GetPlayerCuff[playerid] == true || GetPlayerTie[playerid] == true || IsLaw(playerid) || IsArmy(playerid)) return true; // строка 2646
SetPlayerSpecialAction(playerid,SPECIAL_ACTION_HANDSUP);
TogglePlayerControllableEx(playerid, 0);
GetPlayerTazer[playerid] = true;
SetTimerEx("UnTazer", 15000, false,"i",playerid);
GetPlayerName(playerid, sn, sizeof(sn));
GetPlayerName(issuerid, gp, sizeof(gp));
new mes[128];
format(mes, sizeof(mes),"Вы ударили %s электрошокером", sn);
SendClientMessage(issuerid, COLOR_BLUE,mes);
format(mes, sizeof(mes), "%s ударил %s электрошокером", gp, sn);
ProxDetector(10.0, playerid, mes,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
if(weaponid == 5)
{
new Float: health;
GetPlayerHealth(playerid, health);
SetPlayerHealthAC(playerid, health - 20.0);
return true;
}
return true;
}
Код:[16:20:32] [debug] Run time error 4: "Array index out of bounds" [16:20:32] [debug] Accessing element at index 65535 past array upper bound 99 [16:20:32] [debug] AMX backtrace: [16:20:32] [debug] #0 00020d74 in public OnPlayerTakeDamage (playerid=0, issuerid=65535, Float:amount=3.30000, weaponid=54, bodypart=3) at C:\Documents and Settings\Admin\Рабочий стол\Advantage Rp\gamemodes\ARP.pwn:2646
Используй тот вариант, что дал Edwin. Сокращение в данном случае лишь сделает хуже
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Trender (23.11.2014)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)