-
Sziasztok.
Szeretnék pár parancsot egybe fûzni.. Azaz Dialog segítségével meg csinálni mondjuk az az 5 parancsot.
Szóval Például meg van ez:
ShowPlayerDialog(playerid, RLeader, DIALOG_STYLE_LIST, \"Rendõr Leader Kezelõ Felület.\", \"Rendõr Felvétel\\nFõnökös Rang\\nRendõr Kirúg\", \"Ok\", \"Mégse\");
Na igen. De ha rá megy mondjuk a \"Rendõr Felvétel\"-re akkor Dobja tovább egy olyan Dialogra amibe lehet írni és az a ID-t kéri. Ha a Id-t lenyomja hogy ok akkor azt az ID-t felveszi.
Erre a Dialog Típusra menyen tovább:
DIALOG_STYLE_INPUT
És segítségül le írom hogy a Módomba így lehet fel venni rendõrt:
if(strcmp(cmd, \"/rendõr\", true) == 0 || strcmp(cmd, \"/rendõr\", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, \"HASZNÁLAT: /rendõr [JátékosID/NévRészlet]\");
return 1;
}
new para1;
para1 = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
if (PlayerInfo[playerid][pLeader] == 1 || Admin(playerid, 4))
{
if(IsPlayerConnected(para1))
{
if(para1 != INVALID_PLAYER_ID)
{
if(PlayerInfo[para1][pMember] > 0)
{
SendClientMessage(playerid, COLOR_GREY, \"A játékosnak már van leaderes munkája!\");
return 1;
}
GetPlayerName(para1, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
PlayerInfo[para1][pMember] = 1;
PlayerInfo[para1][pRank] = 1;
format(string, sizeof(string), \"%s felvett rendõrnek!\", sendername);
SendClientMessage(para1, 0x33CCFFAA, string);
format(string, sizeof(string), \"Felvetted %s rendõrnek.\", rag(giveplayer,3));
SendClientMessage(playerid, 0x33CCFFAA, string);
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), \"<< %s felvette %s a rendõrségbe >>\", sendername, rag(giveplayer,3));
SendFAdminMessage(COLOR_ADMIN,string);
SetPlayerColor(para1, 0x3399FF);
if(PlayerInfo[para1][pSex] == 1)
{
PlayerInfo[para1][Munkaruha1] = 280;
SetPlayerSkin(para1,280);
}
if(PlayerInfo[para1][pSex] == 2)
{
PlayerInfo[para1][Munkaruha1] = 192;
SetPlayerSkin(para1,192);
}
new nev[32];
GetPlayerName(playerid, nev, sizeof(nev));
new h,mi,s,y,m,d;
getdate(y,m,d);
gettime(h,mi,s);
format(stringx,sizeof(stringx), \"[%d/%d/%d][%d:%d:%d] %s felvette %s rendõrnek.\",y,m,d,h,mi,s,nev,rag(giveplayer,3));
LoOoG(stringx);
}
}//not connected
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, \"Nem vagy rendõrfõnök!\");
}
}
return 1;
}
És ez segícségével szeretném a segícségeteket kérni.
Ha ebben birtok segíteni akkor ön állóan meg bírom magam is csinálni a többit
Remélem birtok segíteni.
-
Felül definiálod:
#define RLeader2 55 //input dialóg azonosító
OnDialogResponse -részhez:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == RLeader)
{
if(response)
if(listitem == 0) //ha kiválasztja a \"Rendõr Felvétel\" -t
{
ShowPlayerDialog(playerid, RLeader2, DIALOG_STYLE_INPUT, \"Rendõr Felvétel\", \"Add meg az ID-t, akit felszeretnél venni.\", \"Rendben\",\"Mégse\");
}
}
if(dialogid == RLeader2) //ID beírás
{
if(response)
{
SetPVarInt(playerid, \"felvettID\", strval(inputtext)); //ID elmentése amit beír [by Virgonc]
}
}
return 1;
}
Késõbb, ezt a \"felvettID\" -t használhod pl. kiírásnál:
format(string, sizeof(string), \"[RENDÕR FELVÉTEL] id:%d mostantól a Rendõrség tagja.\", GetPVarInt(playerid, \"felvettID\");
SendClientMessageToAll(0xB3D5B2AA, string);
-
ÉS akkor a felvevõs részt ide írjam? :
if(response)
{
SetPVarInt(playerid, \"felvettID\", strval(inputtext)); //ID elmentése amit beír [by Virgonc] <--- Ez alá?
}
Jó lenne ha ugy írnád le nekem hogy a /rendõr parancsbõl a cuccokat bele rakod a Dialogos részbe :)
-
Az a baj, hogy összekavarodok a sok if-ben, meg alapból távol áll tõlem az strcmp de egyébként igen oda kell. (csak nem az összeset)
Konkrétan hogyan akarod? Beírja az illetõ a /rendõr parancsot és elõhozza azt a DIALOG_STYLE_LIST -et és akkor lehessen választani a 3 opció közül?
-
Az a baj, hogy összekavarodok a sok if-ben, meg alapból távol áll tõlem az strcmp de egyébként igen oda kell. (csak nem az összeset)
Konkrétan hogyan akarod? Beírja az illetõ a /rendõr parancsot és elõhozza azt a DIALOG_STYLE_LIST -et és akkor lehessen választani a 3 opció közül?
Ugy gondolom hogy be irja a /leaderr parancsot amikor be hozza neki azt a Dialogot amit az elején írtam.
Amikor rá megy a \"Rendõr Felvesz\" Gombra akkor Át dobja egy Inputos dialogba ahol kéri az ID-t vagy a Játékos nevét. Ha azt be írta akkor rá nyom az okra akkor felveszi azt a játékost Rendõrnek.
//-------------------
--------------------//
Ha ebben birsz segíteni akkor a többit meg birom csinálni.
-
#include <a_samp>
#define RLeader 54
#define RLeader2 55
#define COLOR_RED 0xAA3333AA
#define COLOR_GREY 0xAFAFAFAA
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[256];
if(strcmp(cmd, \"/rendõr\", true) == 0 || strcmp(cmd, \"/rendõr\", true) == 0)
{
if(PlayerInfo[playerid][pLeader] == 1 || Admin(playerid, 4))
{
ShowPlayerDialog(playerid, RLeader, DIALOG_STYLE_LIST, \"Rendõr Leader Kezelõ Felület.\", \"Rendõr Felvétel\\nFõnökös Rang\\nRendõr Kirúg\", \"Ok\", \"Mégse\");
} else {
SendClientMessage(playerid, COLOR_GRAD1, \"Nem vagy rendõrfõnök!\");
}
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == RLeader)
{
if(response)
if(listitem == 0) //Rendõr Felvétel
{
ShowPlayerDialog(playerid, RLeader2, DIALOG_STYLE_INPUT, \"Rendõr Felvétel\", \"Add meg az ID-t, akit felszeretnél venni.\", \"Rendben\",\"Mégse\");
}
if(listitem == 1) //Fõnökös Rang
{
//script
//script
//script
}
if(listitem ==2) //Rendõr Kirúg
{
//script
//script
//script
}
}
if(dialogid == RLeader2) //Rendõr Felvétel - ID beírás
{
if(response)
{
if(!IsPlayerConnected(strval(inputtext))) return SendClientMessage(playerid,COLOR_RED,\"Ez a játékos nem elérhetõ.\");
if(PlayerInfo[strval(inputtext)][pMember] > 0) return SendClientMessage(playerid, COLOR_GREY, \"A játékosnak már van leaderes munkája!\");
SetPVarInt(playerid, \"felvettID\", strval(inputtext)); //ID elmentése amit beír [by Virgonc]
GetPlayerName(GetPVarInt(playerid, \"felvettID\", giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
PlayerInfo[GetPVarInt(playerid, \"felvettID\")][pMember] = 1;
PlayerInfo[GetPVarInt(playerid, \"felvettID\"][pRank] = 1;
format(string, sizeof(string), \"%s felvett rendõrnek!\", sendername);
SendClientMessage(GetPVarInt(playerid, \"felvettID\", 0x33CCFFAA, string);
format(string, sizeof(string), \"Felvetted %s rendõrnek.\", rag(giveplayer,3));
SendClientMessage(playerid, 0x33CCFFAA, string);
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), \"<< %s felvette %s a rendõrségbe >>\", sendername, rag(giveplayer,3));
SendFAdminMessage(COLOR_ADMIN,string);
SetPlayerColor(GetPVarInt(playerid, \"felvettID\", 0x3399FF);
if(PlayerInfo[GetPVarInt(playerid, \"felvettID\"][pSex] == 1)
{
PlayerInfo[GetPVarInt(playerid, \"felvettID\"][Munkaruha1] = 280;
SetPlayerSkin(GetPVarInt(playerid, \"felvettID\",280);
}
if(PlayerInfo[GetPVarInt(playerid, \"felvettID\"][pSex] == 2)
{
PlayerInfo[GetPVarInt(playerid, \"felvettID\"][Munkaruha1] = 192;
SetPlayerSkin(GetPVarInt(playerid, \"felvettID\",192);
}
new nev[32];
GetPlayerName(playerid, nev, sizeof(nev));
new h,mi,s,y,m,d;
getdate(y,m,d);
gettime(h,mi,s);
format(stringx,sizeof(stringx), \"[%d/%d/%d][%d:%d:%d] %s felvette %s rendõrnek.\",y,m,d,h,mi,s,nev,rag(giveplayer,3));
LoOoG(stringx);
}
}
return 1;
}
Szerintem full rossz az egész, de már belegabalyodtam. :unsure: Errorozik is össze-vissza :no: Hátha valaki tudja, én feldobom. :doubt:
-
Azért errorozik mert nincs meg neked a módbol a Forwardok stb...
Dupla hozzászólás automatikusan összefûzve. ( 2013. január 26. - 02:37:56 )
Valaki segít? Mert nem jó sehogy se :(
-
Segít valaki? Sehogy se paszol bele:-S
-
Na jó mivel olyan függvényeket stb.-ket használsz amiket lusta vagyok megkeresni illetve megírni ezért egy sablont kapsz tõlem amibe már beletudod építeni a gondolataidat, ezt ha berakod egy üres pawno fájlba akkor fs-ként müxik szóval tudod tesztelgetni, elõre szólok szokása összeakadni más fs/gm-ekben lévõ dialogid-kkel hogy miért azt ne kérdezd mert én nem tudom megmondani.
#include <a_samp>
new dialog1 = 101; //IGEN változóként adtam meg különben kb. semmi reakciót nem adott ki magából
new dialog2 = 102; // eléggé rühellem a dialógokat de mivel senki más nem segít ezért én megteszem arra figyelj ne ütközzön másik dialigid-vel
public OnFilterScriptInit()
{
print(\"\\n--------------------------------------\");
print(\" Dialog Test\");
print(\"--------------------------------------\\n\");
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp(\"/showdialog\", cmdtext, true, 10) == 0) //ez az ami elõhozza a menüdet
{
ShowPlayerDialog(playerid, dialog1, DIALOG_STYLE_LIST, \"Rendõr Leader Kezelõ Felület.\", \"Rendõr Felvétel\\nFõnökös Rang\\nRendõr Kirúg\", \"Ok\", \"Mégse\");
return 1;
}
if (strcmp(\"/showdialog2\", cmdtext, true, 10) == 0) //ezt csak magamnak teszteléshez csináltam törölheted
{
ShowPlayerDialog(playerid, dialog2, DIALOG_STYLE_INPUT, \"Tag felvétel\", \"Kérem adja meg a személy azonosítóját (ID)\", \"Ok\", \"Mégse\");
return 1;
}
return 0;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(response)
{
if(dialogid == dialog1) { // megnézzük hogy a dialogid-je 1-es e
if(listitem == 0) //ha igen megnézzük a választott menüpontot
{
ShowPlayerDialog(playerid, dialog2, DIALOG_STYLE_INPUT, \"Tag felvétel\", \"Kérem adja meg a személy azonosítóját (ID)\", \"Ok\", \"Mégse\"); // inputos rész
}
return 1;
}
if (dialogid == dialog2) { //inputos dialogid-jét nézi hogy az e
if(strlen(inputtext) != 0 ) //megnézzük írtak e bele valamit
{
new id = strval(inputtext); // az a stringet kicsit belevarázsoljuk az id , egész számos változóba
SendClientMessage(id,0xAA3333AA,\"MÜXIK BANYEK!!\"); // és ha minden jól ment és a saját id-det írtad be megkaptad ezt az üzit
}
return 1;
}
}
return 1;
}
Ha valaki belemer kötni hogy miért if-ek és nem switch(dialogid) | case dialog1 | case dialog2 | akkor azért mert ehhez volt kedvem azt egészségetekre xD
Igen valószínûleg meglehet jobban is oldani,de most ennyire tellett, remélem tudtam ezzel segíteni valamit Fanni ^-^ (ha nem jó vagy további segítség kellene skype-on is elérsz vagy x-en mind2 aláírásomban van)
Na byebye mindenki Red-Eye voltam a Senkik földjérõl! :smokin: