converter zcmd - Sam2018 -  11/03/2021
 
 
ajude-me a converter este comando para zmcd  
adicionar sscanf ? 
Código: #include <a_samp> 
#define DIALOG_DUEL 24245 
new bool:InvitedDuel[MAX_PLAYERS]; 
new IdDuel[MAX_PLAYERS]; 
new bool:UsingArena; 
new Counting = 5; 
new CountDueling[5][5] ={"~r~1","~b~2","~p~3","~y~4","~g~5"}; 
forward ExecuteCount(playerid,pid); 
public ExecuteCount(playerid,pid) 
{ 
    if (Counting > 0) 
    { 
        GameTextForPlayer(playerid,CountDueling[Counting-1], 2500, 3); 
        GameTextForPlayer(pid,CountDueling[Counting-1], 1000, 3); 
        Counting--; 
        SetTimerEx("GoDuel",1000,false,"ii",playerid,pid); 
    } 
    else 
    { 
        GameTextForPlayer(playerid,"~>~~g~Go~w~Go~r~Go~b~Go~<~", 2500, 3); 
        GameTextForPlayer(pid,"~>~~g~Go~w~Go~r~Go~b~Go~<~", 2500, 3); 
        Counting = 5; 
        TogglePlayerControllable(playerid,true); 
        TogglePlayerControllable(pid,true); 
    } 
    return 1; 
} 
 
 
public OnPlayerCommandText(playerid, cmdtext[]) 
{ 
    new cmd[128]; 
    new idx; 
    new id; 
    cmd = otherplayerids(cmdtext, idx); 
    if(!strcmp("/duel", cmd, true)) 
    { 
        new tmp[128]; 
        new string[128]; 
        tmp = otherplayerids(cmdtext, idx); 
        id = strval(tmp); 
        if(InvitedDuel[playerid] == true) return SendClientMessage(playerid,0xF41917AA,"»»[DUEL]«« : Have you invited someone, wait Expire Invitation"); 
        if(UsingArena == true) return SendClientMessage(playerid,0xF41917AA,"»»[DUEL]«« : At the time the Arena is Being Used"); 
        if(!strlen(tmp)) return SendClientMessage(playerid,0xF41917AA,"»»[DUEL]«« : You must enter the ID of the player following the Way (/duel [playerid])"); 
        if(id == playerid) return SendClientMessage(playerid,0xF41917AA,"»»[DUEL]«« : You can not invite the Self"); 
        if(InvitedDuel[id] == true) return SendClientMessage(playerid,0xF41917AA,"»»[DUEL]«« : Currently the player is in a Duel, wait.."); 
        new name[MAX_PLAYER_NAME]; 
        GetPlayerName(playerid, name, sizeof(name)); 
        format(string, sizeof(string), "»»[DUEL]«« : %s This inviting you to a \n Duel Runing (Press Accept to Accept Duel)",name); 
        ShowPlayerDialog(id,DIALOG_DUEL,DIALOG_STYLE_MSGBOX,"»»[DUEL]«« :",string,"Accept", "No"); 
        GameTextForPlayer(id,"~r~DUE~w~LO !", 2500, 3); 
        InvitedDuel[id] = true; 
        IdDuel[id] = playerid; 
        SetTimerEx("ExpireDuel",15000,false,"ii",id,playerid); 
        return 1; 
    } 
    return 0; 
} 
 
 
forward GoDuel(playerid,pid); 
public GoDuel(playerid,pid) 
{ 
    //-> Go To  X1 <-// 
    //SetPlayerPos 
    //SetPlayerArmor 
    //SetPlayerHealth 
 
    //-> Functions for Count x1<-// 
    TogglePlayerControllable(playerid,false); 
    TogglePlayerControllable(pid,false); 
    ExecuteCount(playerid,pid); 
    return 1; 
} 
 
 
forward ExpireDuel(playerid,pid); 
public ExpireDuel(playerid,pid) 
{ 
    if(UsingArena == false) 
    { 
        SendClientMessage(pid,0x1DF6F6AA,"»»[DUEL]«« : Expired challenge, He Refused"); 
        SendClientMessage(playerid,0x1DF6F6AA,"»»[DUEL]«« : Expired challenge, you automatically refuse"); 
        InvitedDuel[pid] = false; 
        InvitedDuel[playerid] = false; 
        IdDuel[playerid] = playerid; 
        IdDuel[pid] = pid; 
    } 
    return 1; 
} 
 
 
otherplayerids(const string[], &index) 
{ 
    new length = strlen(string); 
    while ((index < length) && (string[index] <= ' ')) 
    { 
        index++; 
    } 
    new offset = index; 
    new result[20]; 
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1))) 
    { 
        result[index - offset] = string[index]; 
        index++; 
    } 
    result[index - offset] = EOS; 
    return result; 
} 
 
 
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) 
{ 
    if(dialogid == DIALOG_DUEL) 
    { 
        if(!response) return ExpireDuel(playerid,IdDuel[playerid]); 
        if(response) 
        { 
            UsingArena = true; 
            new name[MAX_PLAYER_NAME], string[44]; 
            GetPlayerName(playerid, name, sizeof(name)); 
            format(string, sizeof(string), "»»[DUEL]«« : %s accepted the challenge, wait 8 seconds to go to Duel.",name); 
            SendClientMessage(IdDuel[playerid],0xF6F600AA,string); 
            SendClientMessage(playerid,0xF6F600AA,"»»[DUEL]«« : You accepted the Duel Wait 8 seconds to process your Data"); 
            SetTimerEx("GoDuel",8000,false,"ii",playerid,IdDuel[playerid]); 
        } 
        return 1; 
    } 
    return 1; 
} 
 
 
public OnPlayerDeath(playerid, killerid, reason) 
{ 
    if(InvitedDuel[killerid] == true) 
    { 
        new Float:healthkiller; 
        new namekiller[24],namedeather[24],string[44]; 
        GetPlayerName(killerid, namekiller, 24); 
        GetPlayerName(playerid, namedeather, 24); 
        GetPlayerHealth(killerid,healthkiller); 
        format(string, sizeof(string), "»»[DUELO]«« : %s Wins Duel of %s how %0.0f off Armour and Health",namekiller,namedeather,healthkiller); 
        SendClientMessageToAll(0xF600F6AA, string); 
        InvitedDuel[killerid] = false; 
        InvitedDuel[playerid] = false; 
        IdDuel[playerid] = playerid; 
        IdDuel[killerid] = killerid; 
        UsingArena = false; 
        healthkiller = 0; 
        SpawnPlayer(killerid); 
    } 
    return 1; 
}
  
 
 
 
RE: converter zcmd - xbruno1000x -  11/03/2021
 
 
Substitua isso 
Código: if(!strcmp("/duel", cmd, true))
  
Por isso 
Código: CMD:duel(playerid)
  
 
ZCMD também não usa OnPlayerCommandText.
 
 
 
RE: converter zcmd - Sam2018 -  11/03/2021
 
 
 (11/03/2021 13:58)xbruno1000x Escreveu:  Substitua isso 
Código: if(!strcmp("/duel", cmd, true))
  
Por isso 
Código: CMD:duel(playerid)
  
 
ZCMD também não usa OnPlayerCommandText. é possível adicionar sscanf
 
 
 
RE: converter zcmd - k2bi_YT -  11/03/2021
 
 
Caso queira usar a include ZCMD, você deve defini-la primeiro no topo do seu gamemode 
Código PHP: #define <ZCMD> #define <sscanf> 
 
  
Logo após não será necessário usar o callback OnPlayerCOmmandText; Você pode definir um comando direto usando: 
Código PHP: CMD:meucomando (playerid, params[]) 
 
  
Fazendo um comando como exemplo, você pode pegar da mesma base e alterar o comando que você quer estar fazendo, isso é valido quando for usar o sscanf 
 
Código PHP: CMD:teleportar(playerid, params[]) {     new mundo, interior, Float:x, Float:y, Float:z;     if(sscanf(params, "fffdd", x,y,z,interior, mundo)) return SendClientMessage(playerid, -1, "Use: /teleportar [PosX] [PosY] [PosZ] [Interior] [Mundo] "); //f = Valor Float | d = Valor Inteiro     SetPlayerVirtualWorld(playerid, mundo);     SetPlayerInterior(playerid, interior);     SetPlayerPos(playerid, x,y,z);     return 1; } 
 
  
 
 
 
 |