GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: BarnyBoy - 2014. május 05. - 20:46:49

Cím: /f e fegyvernél
Írta: BarnyBoy - 2014. május 05. - 20:46:49
Üdv!
Hogyan kellene megcsinálni azt hogy 2 paraméter legyen? Szóval ne csak /f MP5, hanem /f e MP5.
Elõre is köszi! :)
Cím: /f e fegyvernél
Írta: skyLine - 2014. május 06. - 00:24:06
sscanf-al egyszerûen.
Például így nézne ki:
 
new param1, param2;
if(sscanf(params, \"dd\", param1, param2)) return SendClientMessage(playerid, usecolor, \"Használat: /f [Funkció 1] [Funkció 2]\");

 
Ha kicsit utánaolvasol az sscanf-nak akkor megértheted.
Cím: /f e fegyvernél
Írta: KovaNovik - 2014. május 06. - 04:30:15
Ha meg ilyen funkciót akar, pont, hogy stringet kell neki megadni.
 
new JF[MAX_PLAYERS];
stock GetWeaponIDFromName(fn[])
{
new fn2[32], fsz = -1;
for(new a; a < 0; a++)
{
GetWeaponName(a, fn2, sizeof(fn2));
if(!strcmp(fn, fn2)) return a;
}
return -1;
}
public OnPlayerUpdate(playerid)
{
if(GetPlayerWeapon(playerid) != JF[playerid] SetPlayerArmedWeapon(playerid, JF[playerid]);
return 1;
}
CMD:f(playerid, params[])
{
new muv[16], fnev[32];
if(sscanf(params, \"s[17]\", muv) return SendClientMessage(playerid, -1, \"Használat: /f [e/k/r].\");
if(!strcmp(\"e\", muv)) //ha a muvelet \"e\" volt, azon belül is operálhatunk a fegyvernévvel is, ha tovább daraboltuk
{
if(sscanf(params, \"s[17]s[33]\", muv, fnev) return SendClientMessage(playerid, -1, \"Használat: /f e [fegyver].\");
//itt már operálhatsz a fegyver nevével, strcmp-vel hasonlíthatod, de egyszerûbb lesz ezzel a függvénnyel:
elvf = GetWeaponIDFromName(fnev);
if(GetPlayerWeapon(playerid) == elvf) return SendClientMessage(playerid, -1, \"Ez már nálad van!\");
//SetPlayerArmedWeapon(playerid, elvf);
JF[playerid] = elvf;
}
else if(!strcmp(\"k\", muv))
{
if(GetPlayerWeapon(playerid) == 0) return SendClientMessage(playerid, -1, \"Mit akarsz eltenni? o.O\");
//SetPlayerArmedWeapon(playerid, 0);
JF[playerid] = 0;
}
else if(!strcmp(\"r\", muv))
{
//ide jöhetnek dolgok..
}
return 1;
}
//Most írtam, nem valószínû, hogy megy, habár..

 
Sok szerencsét, további jó scriptelést! :thumbsup:
Cím: /f e fegyvernél
Írta: BarnyBoy - 2014. május 06. - 16:52:59
Csak szerintem nagyon bonyolult? Mert nem nagyon értem... utánaolvastam, most sem vágom teljesen.
Valaki meg tudná nekem azt csinálni hogy ha a játékos beírja hogy /f e MP5 akkor ezt behozza neki:
 
if(ElolDeagle[playerid] == 0 && ElolUto[playerid] == 0 && ElolColt[playerid] == 0)
   {
      if(ElolMP5[playerid] == 0)
      {
         if(pInfo[playerid][pMP5] >= 50)
          {
            SendClientMessage(playerid, VILAGOSPIROS, \"Elõvetted az MP5 típusú fegyvert.\");
            cmd_va(playerid, \"elõvett egy fegyvert.\");
            GivePlayerWeapon(playerid, 29, 50);
            pInfo[playerid][pMP5] -= 50;
            ElolMP5[playerid] = 1;
         }
         else if(pInfo[playerid][pMP5] < 50 && pInfo[playerid][pMP5] > 0)
         {
            SendClientMessage(playerid, VILAGOSPIROS, \"Elõvetted az MP5 típusú fegyvert.\");
            cmd_va(playerid, \"elõvett egy fegyvert.\");
            GivePlayerWeapon(playerid, 29, pInfo[playerid][pMP5]);
            pInfo[playerid][pMP5] = 0;
            ElolMP5[playerid] = 1;
         }
         else
         {
            SendClientMessage(playerid, PIROS, \"Nincs MP5 nálad!\");
         }
      }
   }

 
A többit ez alapján megcsinálnám.
Cím: /f e fegyvernél
Írta: KovaNovik - 2014. május 06. - 20:54:10
Megírtam úgy, hogy bõvíteni sem kell. Az aktuális fegyvert miért is nem elég ellenõrizni? :D
Amúgy bem bonyolult (annyira), csak kicsit tömör.
Cím: /f e fegyvernél
Írta: Flash - 2014. május 24. - 14:58:38
[mod]Témát zártam! Ha mégsem oldódott meg a problémád, kérlek jelezd PÜ-be, és megnyitom a témát![/mod]
Cím: /f e fegyvernél
Írta: BarnyBoy - 2014. május 05. - 20:46:49
Üdv!
Hogyan kellene megcsinálni azt hogy 2 paraméter legyen? Szóval ne csak /f MP5, hanem /f e MP5.
Elõre is köszi! :)
Cím: /f e fegyvernél
Írta: skyLine - 2014. május 06. - 00:24:06
sscanf-al egyszerûen.
Például így nézne ki:
 
new param1, param2;
if(sscanf(params, \"dd\", param1, param2)) return SendClientMessage(playerid, usecolor, \"Használat: /f [Funkció 1] [Funkció 2]\");

 
Ha kicsit utánaolvasol az sscanf-nak akkor megértheted.
Cím: /f e fegyvernél
Írta: KovaNovik - 2014. május 06. - 04:30:15
Ha meg ilyen funkciót akar, pont, hogy stringet kell neki megadni.
 
new JF[MAX_PLAYERS];
stock GetWeaponIDFromName(fn[])
{
new fn2[32], fsz = -1;
for(new a; a < 0; a++)
{
GetWeaponName(a, fn2, sizeof(fn2));
if(!strcmp(fn, fn2)) return a;
}
return -1;
}
public OnPlayerUpdate(playerid)
{
if(GetPlayerWeapon(playerid) != JF[playerid] SetPlayerArmedWeapon(playerid, JF[playerid]);
return 1;
}
CMD:f(playerid, params[])
{
new muv[16], fnev[32];
if(sscanf(params, \"s[17]\", muv) return SendClientMessage(playerid, -1, \"Használat: /f [e/k/r].\");
if(!strcmp(\"e\", muv)) //ha a muvelet \"e\" volt, azon belül is operálhatunk a fegyvernévvel is, ha tovább daraboltuk
{
if(sscanf(params, \"s[17]s[33]\", muv, fnev) return SendClientMessage(playerid, -1, \"Használat: /f e [fegyver].\");
//itt már operálhatsz a fegyver nevével, strcmp-vel hasonlíthatod, de egyszerûbb lesz ezzel a függvénnyel:
elvf = GetWeaponIDFromName(fnev);
if(GetPlayerWeapon(playerid) == elvf) return SendClientMessage(playerid, -1, \"Ez már nálad van!\");
//SetPlayerArmedWeapon(playerid, elvf);
JF[playerid] = elvf;
}
else if(!strcmp(\"k\", muv))
{
if(GetPlayerWeapon(playerid) == 0) return SendClientMessage(playerid, -1, \"Mit akarsz eltenni? o.O\");
//SetPlayerArmedWeapon(playerid, 0);
JF[playerid] = 0;
}
else if(!strcmp(\"r\", muv))
{
//ide jöhetnek dolgok..
}
return 1;
}
//Most írtam, nem valószínû, hogy megy, habár..

 
Sok szerencsét, további jó scriptelést! :thumbsup:
Cím: /f e fegyvernél
Írta: BarnyBoy - 2014. május 06. - 16:52:59
Csak szerintem nagyon bonyolult? Mert nem nagyon értem... utánaolvastam, most sem vágom teljesen.
Valaki meg tudná nekem azt csinálni hogy ha a játékos beírja hogy /f e MP5 akkor ezt behozza neki:
 
if(ElolDeagle[playerid] == 0 && ElolUto[playerid] == 0 && ElolColt[playerid] == 0)
   {
      if(ElolMP5[playerid] == 0)
      {
         if(pInfo[playerid][pMP5] >= 50)
          {
            SendClientMessage(playerid, VILAGOSPIROS, \"Elõvetted az MP5 típusú fegyvert.\");
            cmd_va(playerid, \"elõvett egy fegyvert.\");
            GivePlayerWeapon(playerid, 29, 50);
            pInfo[playerid][pMP5] -= 50;
            ElolMP5[playerid] = 1;
         }
         else if(pInfo[playerid][pMP5] < 50 && pInfo[playerid][pMP5] > 0)
         {
            SendClientMessage(playerid, VILAGOSPIROS, \"Elõvetted az MP5 típusú fegyvert.\");
            cmd_va(playerid, \"elõvett egy fegyvert.\");
            GivePlayerWeapon(playerid, 29, pInfo[playerid][pMP5]);
            pInfo[playerid][pMP5] = 0;
            ElolMP5[playerid] = 1;
         }
         else
         {
            SendClientMessage(playerid, PIROS, \"Nincs MP5 nálad!\");
         }
      }
   }

 
A többit ez alapján megcsinálnám.
Cím: /f e fegyvernél
Írta: KovaNovik - 2014. május 06. - 20:54:10
Megírtam úgy, hogy bõvíteni sem kell. Az aktuális fegyvert miért is nem elég ellenõrizni? :D
Amúgy bem bonyolult (annyira), csak kicsit tömör.
Cím: /f e fegyvernél
Írta: Flash - 2014. május 24. - 14:58:38
[mod]Témát zártam! Ha mégsem oldódott meg a problémád, kérlek jelezd PÜ-be, és megnyitom a témát![/mod]