Szerző Téma: /v alatt több parancs!  (Megtekintve 1771 alkalommal)

Nem elérhető b4zsY

/v alatt több parancs!
« Dátum: 2011. augusztus 11. - 04:09:43 »
0 Show voters
Sziasztok!
Azzal a kérdéssel/kéréssel fordulok hozzátok, hogy az alábbi
\"/v\"
parancs alá megoldható lehetne-e az hogy ... (nemtudom kifejezni magam inkább leírom):
például van az alábbi: /v parancs, namost ha ezt beírom akkor bejön egy Dialog menü, deha a /v [kocsiID] parancsot használom, akkor meg a kívánt ID-jû jármû spwanolódna le, mellesleg ha azt írnám be, hogy /v lock, akkormeg bezárná az ajtajait a kocsinak.
(Továbbá, ez hogylehetne megoldható? /v [jármûID]-hez olyan parancsot írni .pwn -be, hogy:
[pawn]if(strcmp(cmd, \"/v 431\", true) == 0)[/pawn]
nem, nemilyet! Hanem ezt:
[pawn]if(strcmp(cmd, \"/v %s\", true) == 0)[/pawn]  (a %s nemtudom hogy megfelelõ kód oda, csak példaképpen írtam!)
a \"%s\" itt helyetesítené a jármû ID jét.
)
Nos, ennyit szerettem volna kérdezni. :D Remélem megoldható, és tudtok segíteni. :angel:

/v alatt több parancs!
« Válasz #1 Dátum: 2011. augusztus 11. - 10:09:53 »
+1 Show voters
Igen megoldható de használj zcmdt vagy valami más hasonló dolgot mert egyszerûbb lenne, ez az strtok kissé elavult lett.
Röviden az lenne a lényeg hogy neked meg kellene vizsgálni a bevitt parancs második paraméterét.
Itt egy példa amit nem teszteltem és csak most írtam szóval semmi sincs kiegészítve de hátha kiindulásnak segít:
[pawn]
new
   cmd[128];
cmd = strtok(cmdtext, idx);
if(strcmp(cmd, \"/v\", true) == 0)
{
   new
      cmd2[128]; //a parancs második parameterének tárolásához
   cmd2 = strtok(cmdtext, idx); // tároljuk
   if(strlen(cmd2) == 0) return ShowPlayerDialog(// Ellenõrizzük van-e bevitt második paraméter ha nincs akkor pl.: ShowPlayerDialog vagy SendClientMessage
   else if(IsNumeric(cmd2)) // Ellenõrizzük szám-e // Persze azt is kell majd ellenõrizni hogy érvényes jármû modelid-e a bevitt érték
   {
         CreateVehicle(strval(cmd2),.......
   // Ha van második paraméter megnézzük hogy az lock karakterei-e
   else if(strcmp(cmd2, \"lock\", true) == 0)
[/pawn]
És nézd át ezt az oldalt hátha segít ez is:
http://wiki.sa-mp.com/wiki/Strtok

/v alatt több parancs!
« Válasz #2 Dátum: 2011. augusztus 11. - 12:51:21 »
+1 Show voters
Itt a /v [JármûID]
[pawn]#define FILTERSCRIPT
#include <a_samp>
#include <zcmd>
#include <sscanf2>
CMD:v(playerid, params[])
{
new jid, Float:X, Float:Y, Float:Z, jarmu;
if(sscanf(params, \"i\", jid)) return SendClientMessage(playerid, 0xFFFFFFFF, \"Használat: /v [JármûID]\");
if(jid < 400 || jid > 600) return SendClientMessage(playerid, 0xFFFFFFFF, \"Érvénytelen jármû ID\");
GetPlayerPos(playerid, X,Y,Z);
jarmu = CreateVehicle(jid, X,Y,Z, 0.0, -1,-1, 3600);
PutPlayerInVehicle(playerid, jarmu, 0);
return 1;
}[/pawn]

Kovacs_Bela

  • Vendég
/v alatt több parancs!
« Válasz #3 Dátum: 2011. augusztus 11. - 16:07:18 »
+1 Show voters
[pawn]#define FILTERSCRIPT
#include <a_samp>
#include <zcmd>
#include <sscanf2>
CMD:v(playerid, params[])
{
new jid, Float:X, Float:Y, Float:Z, jarmu;
if(sscanf(params, \"i\", jid)) return ShowPlayerDialog(playerid,1233,DIALOG_STYLE_LIST,\"Jármû\",\"Ide írd a sorokat! új sor elött tegyél\\n-t!\",\"Ok\",\"Ok\");
if(jid < 400 || jid > 600) return SendClientMessage(playerid, 0xFFFFFFFF, \"Érvénytelen jármu\" ID\");
GetPlayerPos(playerid, X,Y,Z);
jarmu = CreateVehicle(jid, X,Y,Z, 0.0, -1,-1, 3600);
PutPlayerInVehicle(playerid, jarmu, 0);
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 1233)
{
    switch(lisititem)
    {
        case 0: //mit csináljon az 1. menünél
        case 1: //mit csináljon a 2. menünél
      //és ezt folytathatod: case 3, case 4, case 5 stb....
   }
}
return 1;
}[/pawn]
nem tudom tesztelni de asszem jó :)

Nem elérhető b4zsY

/v alatt több parancs!
« Válasz #4 Dátum: 2011. augusztus 11. - 19:35:22 »
0 Show voters
Köszönöm! Egy kis változtatással, de sikerült megoldani! :)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal