[AJUDA] Script sу funciona pra um player
#1

Olб, criei um script para quando um player for morto por outro atravйs de uma arma, ele retorna a posiзгo que foi morto apуs 4 segundos.. sу que o script sу funciona pra um player no caso o primeiro que entra no servidor, aн sempre que outro morre, o player "escolhido" volta a posiзгo mesmo sem ser morto, creio que seja problema no SetTimer..
Ouvi dizer que o SetTimerEx vocк consegue setar o timer sу para um player, mas nгo entendo muito disso....

Cуdigo abaixo...

PHP код:
    forward RenasceNoMesmoLugar(playerid);
    new 
Float:posX[MAX_PLAYERS], Float:posY[MAX_PLAYERS], Float:posZ[MAX_PLAYERS];
    new 
pTimer[MAX_PLAYERS];
    new 
pWeapon[MAX_PLAYERS]; 
FUNЗГO
PHP код:
public OnPlayerDeath(playeridkilleridreason)
{
    new 
os;
    if (
killerid == INVALID_PLAYER_ID)
    {
     
SendClientMessage(playerid,COLOR_YELLOW,"Vocк morreu de causas naturais no jogo.");
     return 
1;
     }
    
GetPlayerPos(playerid,posX[playerid],posY[playerid],posZ[playerid]);
    
SendClientMessage(playerid,COLOR_PURPLE,"Vocк morreu!!!");
    
os GetPlayerScore(killerid);
    
SetPlayerScore(killerid,os++);
    
SendClientMessage(killerid,COLOR_PURPLE,"Vocк matou!!!");
    
pTimer[playerid] = SetTimer("RenasceNoMesmoLugar",4000,0);
    
pWeapon[playerid] = GetPlayerWeapon(playerid);
    return 
1;
}
public 
RenasceNoMesmoLugar(playerid)
{
    
SetPlayerInterior(playerid,0);
    
GivePlayerWeapon(playerid,pWeapon[playerid],50);
    
SetPlayerPos(playerid,posX[playerid],posY[playerid],posZ[playerid]);
    
KillTimer(pTimer[playerid]);
    
SendClientMessage(playerid,COLOR_YELLOW,"Vocк voltou ao local aonde morreu.");

Reply
#2

https://sampwiki.blast.hk/wiki/SetTimer
https://sampwiki.blast.hk/wiki/SetTimerEx

pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
  new os;
  new pTimer[MAX_PLAYERS];
  new pWeapon[MAX_PLAYERS];  
  if (killerid == INVALID_PLAYER_ID) return SendClientMessage(playerid,COLOR_YELLOW,"Vocк morreu de causas naturais no jogo.");
 new Float:posX[MAX_PLAYERS], Float:posY[MAX_PLAYERS], Float:posZ[MAX_PLAYERS];
 GetPlayerPos(playerid,posX[playerid],posY[playerid],posZ[playerid]);
 SendClientMessage(playerid,COLOR_PURPLE,"Vocк morreu!!!");
 os = GetPlayerScore(killerid);
 SetPlayerScore(killerid,os++);
 SendClientMessage(killerid,COLOR_PURPLE,"Vocк matou!!!");
 pTimer[playerid] = SetTimer("RenasceNoMesmoLugar",4000,0);
 pWeapon[playerid] = GetPlayerWeapon(playerid);
 SetTimer("Renascer", 4000, 0);
 return 1;
}
pawn Код:
forward Renascer(playerid);
public Renascer(playerid)
{
 new Float:posX[MAX_PLAYERS], Float:posY[MAX_PLAYERS], Float:posZ[MAX_PLAYERS];
 SetPlayerInterior(playerid,0);
 GivePlayerWeapon(playerid,pWeapon[playerid],50);
 SetPlayerPos(playerid,posX[playerid],posY[playerid],posZ[playerid]);
 KillTimer(pTimer[playerid]);
 SendClientMessage(playerid,COLOR_YELLOW,"Vocк voltou ao local aonde morreu.");
 return 1;
}
Reply
#3

Quote:
Originally Posted by Shickcard
Посмотреть сообщение
https://sampwiki.blast.hk/wiki/SetTimer
https://sampwiki.blast.hk/wiki/SetTimerEx

pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
  new os;
  new pTimer[MAX_PLAYERS];
  new pWeapon[MAX_PLAYERS];  
  if (killerid == INVALID_PLAYER_ID) return SendClientMessage(playerid,COLOR_YELLOW,"Vocк morreu de causas naturais no jogo.");
 new Float:posX[MAX_PLAYERS], Float:posY[MAX_PLAYERS], Float:posZ[MAX_PLAYERS];
 GetPlayerPos(playerid,posX[playerid],posY[playerid],posZ[playerid]);
 SendClientMessage(playerid,COLOR_PURPLE,"Vocк morreu!!!");
 os = GetPlayerScore(killerid);
 SetPlayerScore(killerid,os++);
 SendClientMessage(killerid,COLOR_PURPLE,"Vocк matou!!!");
 pTimer[playerid] = SetTimer("RenasceNoMesmoLugar",4000,0);
 pWeapon[playerid] = GetPlayerWeapon(playerid);
 SetTimer("Renascer", 4000, 0);
 return 1;
}
pawn Код:
forward Renascer(playerid);
public Renascer(playerid)
{
 new Float:posX[MAX_PLAYERS], Float:posY[MAX_PLAYERS], Float:posZ[MAX_PLAYERS];
 SetPlayerInterior(playerid,0);
 GivePlayerWeapon(playerid,pWeapon[playerid],50);
 SetPlayerPos(playerid,posX[playerid],posY[playerid],posZ[playerid]);
 KillTimer(pTimer[playerid]);
 SendClientMessage(playerid,COLOR_YELLOW,"Vocк voltou ao local aonde morreu.");
 return 1;
}
Pode me dizer o que fez, para eu poder entender o que fiz de errado. Grato
Reply
#4

Sу fiz adicionar o settimer no onplayerdeath
Reply
#5

Quote:
Originally Posted by Shickcard
Посмотреть сообщение
Sу fiz adicionar o settimer no onplayerdeath
ah, mais eu notei que vocк passou as variaveis que estavam publica para dentro da funзгo...

e porque declarar 2 SetTimers? estou confuso :[
Reply
#6

pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
  new os;
  new pTimer[MAX_PLAYERS];
  new pWeapon[MAX_PLAYERS];  
  if (killerid == INVALID_PLAYER_ID) return SendClientMessage(playerid,COLOR_YELLOW,"Vocк morreu de causas naturais no jogo.");
 new Float:posX[MAX_PLAYERS], Float:posY[MAX_PLAYERS], Float:posZ[MAX_PLAYERS];
 GetPlayerPos(playerid,posX[playerid],posY[playerid],posZ[playerid]);
 SendClientMessage(playerid,COLOR_PURPLE,"Vocк morreu!!!");
 os = GetPlayerScore(killerid);
 SetPlayerScore(killerid,os++);
 SendClientMessage(killerid,COLOR_PURPLE,"Vocк matou!!!");
 pWeapon[playerid] = GetPlayerWeapon(playerid);
 SetTimer("Renascer", 4000, 0);
 return 1;
}
Erro meu, desculpa nгo tinha visto o outro settimer.
As variaveis passei para dentro da public para nгo dб erro quando o compilador lк-las.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)