CMD:x1(playerid, params[])
{
new p1, p1_Name[24], p2, p2_Name[24], p_Str[128];
if(sscanf(params, "uu")) return SendClientMessage(playerid, -1, "Use: /x1 <jogador 1> <jogador 2>");
if(!IsPlayerConnected(p1) || !IsPlayerConnected(p2)) return SendClientMessage(playerid, -1, "Um dos IDS estб descontado.");
SetPlayerArmour(p1, 99.9);
SetPlayerHealth(p1, 99.9);
SetPlayerArmour(p2, 99.9);
SetPlayerHealth(p2, 99.9);
ResetPlayerWeapons(p1);
ResetPlayerWeapons(p2);
GivePlayerWeapon(playerid, 24, 1000);
GivePlayerWeapon(playerid, 25, 1000);
GivePlayerWeapon(playerid, 34, 1000);
GivePlayerWeapon(playerid, 24, 1000);
GivePlayerWeapon(playerid, 25, 1000);
GivePlayerWeapon(playerid, 34, 1000);
SetPlayerPos(p1, 1409.1548,-16.9953,1000.9227);
SetPlayerFacingAngle(p1, 93.2642);
SetPlayerPos(p2, 1365.4105,-19.6422,1000.9219);
SetPlayerFacingAngle(p1, 272.5929);
GetPlayerName(p1, p1_Name, sizeof(p1_Name));
GetPlayerName(p2, p2_Name, sizeof(p2_Name));
format(p_Str, sizeof(p_Str), "Vocк iniciou um x1! Jogadores: %s Vs. %s", p1_Name, p2_Name);
SendClientMessage(playerid, -1, p_Str);
return 1;
}
Olб,eu faзo evento evento de x1 no meu serve dm
mas queri um cmd ex: /x1 id id dai dava eagle shot e sniper para cada um deles e colete e vida 100# onde tem que setar eles: o primeiro: 1409.1548,-16.9953,1000.9227,93.2642 o outro 1365.4105,-19.6422,1000.9219,272.5929 |
CMD:iniciarx1(playerid, params[])
{
if(PlayerInfo[playerid][pAdmin] < 4)
{
SendClientMessage(playerid, COLOR_GRAD1, " Vocк nгo pode usar este comando!");
return 1;
}
new jogador1, jogador2, string[158];
if(sscanf(params, "ii", jogador1, jogador2)) return SendClientMessage(playerid, -1, "Use: /iniciarx1 [jogador1] [jogador2]");
if( !IsPlayerConnected(jogador1) || !IsPlayerConnected(!jogador2))
return SendClientMessage(playerid, -1, #ERRO: Coloque um id vбlido );
new pNAME[24];
new pNAME2[24];
GetPlayerName(jogador1, pNAME, 24);
GetPlayerName(jogador2, pNAME2, 24);
SendClientMessageToAll(COLOR_WHITE, "|_________ Aviso da Administraзгo _________|");
format(string, sizeof(string), "%s Avisa: Evento X1 de %s contra %s.", PlayerName(playerid), pNAME, pNAME2);
SendClientMessageToAll(COLOR_DBLUE, string);
//player1
SetPlayerPos(jogador1, 1403.6039,-20.7303,1000.9115);
SetPlayerInterior(jogador1, 1);
SetPlayerFacingAngle(jogador1,90.9610);
Controle(jogador1, 0);
SetCameraBehindPlayer(jogador1);
//player2
SetPlayerPos(jogador2, 1368.5532,-21.7691,1000.9219);
SetPlayerInterior(jogador2, 1);
SetPlayerFacingAngle(jogador2,270.8138);
Controle(jogador2, 0);
SetCameraBehindPlayer(jogador2);
//contagem player 1 e 2
Contagem(jogador1,jogador2);
SetPVarInt(jogador1, "Tempo", gettime());
SetPVarInt(jogador2, "Tempo", gettime());
return true;
}
Pois bem, dei umaprocurada em meu GM e encontrei o comando:
PHP код:
|
pawn Код:
|
CMD:iniciarx1(playerid, params[]) { if(PlayerInfo[playerid][pAdmin]>3) { SendClientMessage(playerid, COLOR_GRAD1, " » Vocк nгo pode usar este comando!"); return 1; } new jogador1, jogador2, string[158]; if(sscanf(params, "ii", jogador1, jogador2)) return SendClientMessage(playerid, -1, "Use: /iniciarx1 [Jogador 1] [Jogador 2]"); if( !IsPlayerConnected(jogador1) || !IsPlayerConnected(!jogador2)) return SendClientMessage(playerid, -1, #ERRO: Coloque um id vбlido ); new pNAME[24]; new pNAME2[24]; new PlayerName[MAX_PLAYERS]; GetPlayerName(jogador1, pNAME, 24); GetPlayerName(jogador2, pNAME2, 24); SendClientMessageToAll(COLOR_WHITE, "|_________ Aviso da Administraзгo _________|"); format(string, sizeof(string), "%s Avisa: Evento X1 de %s contra %s.",PlayerName(playerid), pNAME, pNAME2); SendClientMessageToAll(COLOR_WHITE, string); //player1 SetPlayerPos(jogador1, 1403.6039,-20.7303,1000.9115); SetPlayerInterior(jogador1, 1); SetPlayerFacingAngle(jogador1,90.9610); Controle(jogador1, 0); SetCameraBehindPlayer(jogador1); //player2 SetPlayerPos(jogador2, 1368.5532,-21.7691,1000.9219); SetPlayerInterior(jogador2, 1); SetPlayerFacingAngle(jogador2,270.8138); Controle(jogador2, 0); SetCameraBehindPlayer(jogador2); //contagem player 1 e 2 Contagem(jogador1,jogador2); SetPVarInt(jogador1, "3", gettime()); SetPVarInt(jogador2, "3", gettime()); return true; }
Deu esse erro : error 012: invalid function call, not a valid address : warning 215: expression has no effect : error 001: expected token: ";", but found ")" : error 029: invalid expression, assumed zero : fatal error 107: too many error messages on one line Compilation aborted.Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase
Esse comando
Код:
CMD:iniciarx1(playerid, params[]) { if(PlayerInfo[playerid][pAdmin]>3) { SendClientMessage(playerid, COLOR_GRAD1, " » Vocк nгo pode usar este comando!"); return 1; } new jogador1, jogador2, string[158]; if(sscanf(params, "ii", jogador1, jogador2)) return SendClientMessage(playerid, -1, "Use: /iniciarx1 [Jogador 1] [Jogador 2]"); if( !IsPlayerConnected(jogador1) || !IsPlayerConnected(!jogador2)) return SendClientMessage(playerid, -1, #ERRO: Coloque um id vбlido ); new pNAME[24]; new pNAME2[24]; new PlayerName[MAX_PLAYERS]; GetPlayerName(jogador1, pNAME, 24); GetPlayerName(jogador2, pNAME2, 24); SendClientMessageToAll(COLOR_WHITE, "|_________ Aviso da Administraзгo _________|"); format(string, sizeof(string), "%s Avisa: Evento X1 de %s contra %s.",PlayerName(playerid), pNAME, pNAME2); SendClientMessageToAll(COLOR_WHITE, string); //player1 SetPlayerPos(jogador1, 1403.6039,-20.7303,1000.9115); SetPlayerInterior(jogador1, 1); SetPlayerFacingAngle(jogador1,90.9610); Controle(jogador1, 0); SetCameraBehindPlayer(jogador1); //player2 SetPlayerPos(jogador2, 1368.5532,-21.7691,1000.9219); SetPlayerInterior(jogador2, 1); SetPlayerFacingAngle(jogador2,270.8138); Controle(jogador2, 0); SetCameraBehindPlayer(jogador2); //contagem player 1 e 2 Contagem(jogador1,jogador2); SetPVarInt(jogador1, "3", gettime()); SetPVarInt(jogador2, "3", gettime()); return true; } Код:
Deu esse erro : error 012: invalid function call, not a valid address : warning 215: expression has no effect : error 001: expected token: ";", but found ")" : error 029: invalid expression, assumed zero : fatal error 107: too many error messages on one line Compilation aborted.Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase |
stock Contagem(jogador1,jogador2)
{
TogglePlayerControllable(jogador1,0);
TogglePlayerControllable(jogador2,0);
GameTextForPlayer(jogador1,"3",1000,6);
GameTextForPlayer(jogador2,"3",1000,6);
PlayerPlaySound(jogador1,1056,0,0,0);
PlayerPlaySound(jogador2,1056,0,0,0);
SetTimerEx("Cont",1000,false,"iii",jogador1,jogador2,2);
}
BPF::Cont(jogador1,jogador2,pos)
{
switch(pos)
{
case 2:
{
GameTextForPlayer(jogador1,"2",1000,6);
GameTextForPlayer(jogador2,"2",1000,6);
PlayerPlaySound(jogador2,1056,0,0,0);
PlayerPlaySound(jogador1,1056,0,0,0);
SetTimerEx("Cont",1000,false,"ddd",jogador1,jogador2,1);
SetCameraBehindPlayer(jogador1);
SetCameraBehindPlayer(jogador2);
}
case 1:
{
GameTextForPlayer(jogador1,"1",1000,6);
GameTextForPlayer(jogador2,"1",1000,6);
PlayerPlaySound(jogador2,1056,0,0,0);
PlayerPlaySound(jogador1,1056,0,0,0);
SetTimerEx("Cont",1000,false,"ddd",jogador1,jogador2,0);
}
case 0:
{
GameTextForPlayer(jogador1,"GO GO GO",1000,6);
GameTextForPlayer(jogador2,"GO GO GO",1000,6);
PlayerPlaySound(jogador2,1057,0,0,0);
PlayerPlaySound(jogador1,1057,0,0,0);
TogglePlayerControllable(jogador1,1);
TogglePlayerControllable(jogador2,1);
SetPlayerHealth(jogador1,100.0);
SetPlayerArmour(jogador2,100.0);
GivePlayerWeapon(jogador1, 34, 999);
GivePlayerWeapon(jogador1, 24, 999);
GivePlayerWeapon(jogador1, 25, 999);
SetPlayerArmour(jogador1,100.0);
SetPlayerHealth(jogador2,100.0);
GivePlayerWeapon(jogador2, 34, 999);
GivePlayerWeapon(jogador2, 24, 999);
GivePlayerWeapon(jogador2, 25, 999);
CountDuel[jogador1] = gettime();
CountDuel[jogador2] = gettime();
}
}
return 1;
}
mano,ta bugado,tipo quando do /x1 ja aparece meu nick q й Adt Vs Adt tipo wtf? ai coloco /x1 dai o id 1 e 6 ou qualquer outro aleatorio,e vai denovo abnt e abnt sу um que seta dai testa ai smc e se poder arruma
|
CMD:x1(playerid, params[])
{
new p1, p2, p_Str[128];
if(sscanf(params, "uu")) return SendClientMessage(playerid, -1, "Use: /x1 <jogador 1> <jogador 2>");
if(!IsPlayerConnected(p1) || !IsPlayerConnected(p2)) return SendClientMessage(playerid, -1, "Um dos IDS estб descontado.");
SetPlayerArmour(p1, 99.9);
SetPlayerHealth(p1, 99.9);
SetPlayerArmour(p2, 99.9);
SetPlayerHealth(p2, 99.9);
ResetPlayerWeapons(p1);
ResetPlayerWeapons(p2);
GivePlayerWeapon(playerid, 24, 1000);
GivePlayerWeapon(playerid, 25, 1000);
GivePlayerWeapon(playerid, 34, 1000);
GivePlayerWeapon(playerid, 24, 1000);
GivePlayerWeapon(playerid, 25, 1000);
GivePlayerWeapon(playerid, 34, 1000);
SetPlayerPos(p1, 1409.1548,-16.9953,1000.9227);
SetPlayerFacingAngle(p1, 93.2642);
SetPlayerPos(p2, 1365.4105,-19.6422,1000.9219);
SetPlayerFacingAngle(p1, 272.5929);
format(p_Str, sizeof(p_Str), "Vocк iniciou um x1! Jogadores: %s Vs. %s", GetName(p1), GetName(2));
SendClientMessage(playerid, -1, p_Str);
return 1;
}
stock GetName(id)
{
new n_ome[MAX_PLAYER_NAME];
GetPlayerName(id, n_ome, sizeof n_ome);
return n_ome;
}
Olб,eu faзo evento evento de x1 no meu serve dm
mas queri um cmd ex: /x1 id id dai dava eagle shot e sniper para cada um deles e colete e vida 100# onde tem que setar eles: o primeiro: 1409.1548,-16.9953,1000.9227,93.2642 o outro 1365.4105,-19.6422,1000.9219,272.5929 |
#include <a_samp>
#include <sscanf>
#include <ZCMD>
new Player1[MAX_PLAYERS], Player2[MAX_PLAYERS];
CMD:x1(playerid,params[])
{
new tipo;
if(sscanf(params, "s", tipo)) return SendClientMessage(playerid, -1, "[ ERROR ] >> /x1 [convidar]");
ShowPlayerDialog(playerid, 101, DIALOG_STYLE_INPUT, "Duelo de x1", "Insira o id do player:", "Enviar", "");
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 100)
{
new id;
if(response)
{
id = strval(inputtext);
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "[ ERROR ] » Nenhuma pessoa online com esse ID");
{
new str[128], anome[MAX_PLAYER_NAME], pnome[MAX_PLAYER_NAME];
GetPlayerName(playerid, pnome, sizeof(pnome)); GetPlayerName(id, anome, sizeof(anome));
format(str, sizeof(str), "Olб %s eu %s estou de convidando pra um duelo de x1\nAceita ou recusa?", anome, pnome);
ShowPlayerDialog(id, 101, DIALOG_STYLE_MSGBOX, "Duelo de x1", str, "Aceitar", "recusar");
Player1[playerid] = playerid;
Player2[id] = id;
}
}
}
if(dialogid == 101)
{
if(!response)
{
new nome[MAX_PLAYER_NAME]; new str[128];
GetPlayerName(playerid, nome, sizeof(nome));
format(str, sizeof(str), "[DUELO] >> O jogador %s recusou seu convite de x1", nome);
ShowPlayerDialog(Player1[playerid], 201, DIALOG_STYLE_MSGBOX, "DUELO", str, "Ok", "");
}
else
{
SetTimerEx("StartDuelo", 50000,false, "ii",Player1[playerid],Player2[playerid]);
}
}
return 1;
}
forward StartDuelo(p1, p2);
public StartDuelo(p1, p2)
{
static w = 10; //para quando outro usar o comando nao ir pro msm canto que ja tem 1, a cada luta ira troca o virtual world, ai quadno acaba luta tu cria funзгo pra retorna ao 0
//SetPlayerPos(p1, x,y,z); voce pode deixa o msm lugar pra todos os players, cada 2 estбra em mundos diferentes!
//SetPlayerPos(p2, x,y,z);
SetPlayerPos(p1, 1409.1548,-16.9953,1000.9227); //os lugar que vocк pedio
SetPlayerPos(p2, 1365.4105,-19.6422,1000.9219);
//aqui tu seta as armas
new str[128]; new nome1[MAX_PLAYER_NAME], nome2[MAX_PLAYER_NAME];
GetPlayerName(p1, nome1, sizeof(nome1)); GetPlayerName(p2, nome2, sizeof(nome2));
format(str, sizeof(str), "O jogador %s estб em um duelo contra o jogador %s", nome1, nome2);
SetPlayerInterior(p1, 0);
SetPlayerInterior(p2, 0);
SetPlayerVirtualWorld(p1, w); //tipo os primeiros a usar esse comando de duelo ira epga o virtual mundo 10 e os outro 11 e assim por diante para que nao atrapalhe
SetPlayerVirtualWorld(p2, w);
w++;
return 1;
}
new bool:EventoExistindo;
new bool:IsplayerInEvento[MAX_PLAYERS];
new Float:EventoX, Float:EventoY, Float:EventoZ, EventoInterior;
#define EVENTO 1
#define dcmd(%1,%2) if (!strcmp((%2)[1], #%1, true, (strlen((#%1)))) && ((((%2)[(strlen((#%1))) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%2)[(strlen((#%1))) + 1] == ' ') && (dcmd_%1(playerid, (%2)[(strlen((#%1))) + 2]))))) return 1
public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(evento, cmdtext);
return 0;
}
dcmd_evento(playerid, params[])
{
new tmp[256], idx, cmd;
new string[128];
tmp = strtok(params, idx);
if(!strlen(tmp))
return SendClientMessage(playerid,-1,"Uso: /evento [criar/fechar/armas/ir]");
if(strcmp(tmp, "criar", true)==0)
cmd = 1;
else if(strcmp(tmp, "fechar", true)==0)
cmd = 2;
else if(strcmp(tmp, "armas", true)==0)
cmd = 3;
else if(strcmp(tmp, "ir", true)==0)
cmd = 4;
else return SendClientMessage(playerid,-1,"Uso: /evento [criar/fechar/armas/ir]");
if(cmd == 1)
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,-1,"Vocк nгo й um administrador do servidor!");
ShowPlayerDialog(playerid, EVENTO, DIALOG_STYLE_INPUT, "Criar evento!", "Digite um nome para o evento:", "Avanзar", "Cancelar");
if(EventoExistindo == true) return SendClientMessage(playerid, -1, "Jб tem um evento criado /evento fechar");
EventoExistindo = true;
}
if(cmd == 2)
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,-1,"Vocк nгo й um administrador do servidor!");
if(EventoExistindo == false) return SendClientMessage(playerid,-1, "[ ERROR ] >>Nem um evento existente!");
new str[128]; new nome[MAX_PLAYER_NAME]; GetPlayerName(playerid, nome, sizeof(nome));
format(str, sizeof(str), "O administrador %s fechou o evento que estava ativo", nome);
}
if(cmd == 3)
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,-1,"Vocк nгo й um administrador do servidor!");
if(EventoExistindo == false) return SendClientMessage(playerid,-1, "[ ERROR ] >>Nem um evento existente!");
ShowPlayerDialog(playerid, EVENTO+1, DIALOG_STYLE_INPUT, "Evento Armas", "Escolha o id da arma que vocК dara a quem estб no evento:", "Avanзar", "Cancelar");
}
if(cmd == 4)
{
if(EventoExistindo == false) return SendClientMessage(playerid,-1,"Nгo hб nenhum evento acontecendo!");
IsplayerInEvento[playerid] = true;
SetPlayerPos(playerid, EventoX, EventoY, EventoZ);
SetPlayerInterior(playerid, EventoInterior);
GameTextForPlayer(playerid, "Bem vindo ao evento", 100, 0);
}
return 1;
}
strtok(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 == EVENTO)
{
if(!response)
{
EventoExistindo = false;
SendClientMessage(playerid, -1, "[EVENTO] >> Vocк cancelou o evento!");
}
else
{
GetPlayerPos(playerid, EventoX, EventoY, EventoZ);
EventoInterior = GetPlayerInterior(playerid);
new nome[MAX_PLAYER_NAME]; new str[128];
GetPlayerName(playerid, nome, sizeof(nome));
format(str, sizeof(str), "O administrador %s Criou um evento de: %s | /evento ir", nome, inputtext);
SendClientMessageToAll(-1, str);
}
}
if(dialogid == EVENTO+1)
{
if(!response)
{
SendClientMessage(playerid, -1, "[EVENTO] Comando cancelado");
}
else
{
new arma, amo;
arma = strval(inputtext);
amo = 99999;
if(arma < 0 ) return SendClientMessage(playerid, -1, "[EVENTO - ERROR] >> Nгo tem armas com id 0");
new str[128]; new nome[MAX_PLAYER_NAME], narma[15]; GetPlayerName(playerid, nome, sizeof(nome));
GetWeaponName(arma, narma, sizeof(narma));
format(str, sizeof(str), "O administrador %s deu %s a todos no evento!", nome, narma);
SendClientMessageToAll(-1, str);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsplayerInEvento[i] == true)
{
GivePlayerWeapon(i, arma, amo); //quem estiver de /evento ir ira ganha
}
}
}
}
return 1;
}
http://imgur.com/a/3R0Tb
criei um tutorial Link Usei dcmd e strtok PHP код:
|