Szerző Téma: Fegyver Parancs  (Megtekintve 1365 alkalommal)

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
Fegyver Parancs
« Dátum: 2011. szeptember 02. - 06:25:04 »
0 Show voters
Sziasztok,azért írtam inkább a szkript kérésekbe a problémámat,mert úgy látszik a félig elkészült parancsomon nem tud senki segíteni :D
Szóval egy olyan parancs kéne,amit csak 2 bizonyos ponton lehet használni. (Vagy a pont körüli kicsi rádiuszban)
És ha beírod akkor törli az elõzõ fegyvereidet és ad más fegyvereket.
Hogy lehet idõre lefagyasztani? timert kell valahogy beállítani? ha nincs kedvetek elmagyarázni akkor berakhatjátok,elõre is és onnan tanulmányozom.
lenne egy fõ parancs: /fegyver , ahol kiírná a funkciókat,és 4 alparancsa: /fegyver 1,/fegyver 2 /fegyver 3 /fegyver 4
És elég a megfelelõ helyre ebrakni egy GiveWeapon-t utána már folytatom :D
A másik ami sokkal könnyebb (nekem annak tûnik) Hogy ez egy bizonyos ponton,vagy körülötte egy kis körben lehessen használni a /evés-t ami feltölti a hp-dat és levon 50 dollárt.Ezt már valamennyire megcsináltam csak nem mûködött.Biztos rossz helyre raktam a Range-s \"parancsot\"
Elõre is köszönöm,remélem nem okoztam nagy problémát.
Update: a /evést megoldottam,sikerült beüzemelnem a IsPlayerInRangeOfPoint-ot,és rájöttem az else használatára is :D
Másik kérdés: Hogy oldjam meg hogy a \"NEm vagy étteremben\" piros szöveg mellé ne írja ki az Unknown Commandot ha nincs étteremben?
« Utoljára szerkesztve: 2011. szeptember 02. - 06:53:22 írta tudvari »

Fegyver Parancs
« Válasz #1 Dátum: 2011. szeptember 02. - 12:27:09 »
0 Show voters
ha le szeretnéd fegyverezni a játékost
[pawn]ResetPlayerWeapons(playerid);[/pawn]
fagyasztás:
illeszd be a parancsba ezt,ez le fogja fagyasztani a játékost:
[pawn]TogglePlayerControllable(playerid,0);
[/pawn]
//-----------------------------Timer--------------------------//
//feloldás timere
[pawn]forward Timer(playerid);
public Timer(playerid)
{
TogglePlayerControllable(playerid,1);
return 1;
}[/pawn]
A timert evvel indítod el:
[pawn]SetTimerEx(\"Timer\", 1000, false, \"d\", playerid);[/pawn]
Lehet vannak benne hibák,mert iskolában vagyok,és fejbõl írtam mindent,ha tényleg vannak akkor próbáld õket kijavítani,és ha nem megy jelezz nekem itt!
Update-re a válasz:
Sok féle módon lehet!
pl visszatérés:
[pawn]if(IsPlayerInRangeOfPoint(playerid, 7.0, 2695.6880, -1704.6300, 11.8438)) return SendClientMessage(playerid, 0xFFFFFF, \"Ne mvagy étteremben\");[/pawn]
« Utoljára szerkesztve: 2011. szeptember 02. - 12:29:39 írta kadaradam »

Nem elérhető Stray

  • 617
    • Profil megtekintése
Fegyver Parancs
« Válasz #2 Dátum: 2011. szeptember 02. - 13:58:38 »
+1 Show voters
Ha zcmd-t használsz akkor a unknown command szöveget úgy tudod elkerülni, hogy return 1-et írsz minden parancs végére. Ugyan ez OnPlayerCommandTextnél is.

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
Fegyver Parancs
« Válasz #3 Dátum: 2011. szeptember 02. - 14:07:16 »
0 Show voters
Nem azt használok ha minden igaz :D
 
if(strcmp(cmd, \"/evés\", true) == 0 || strcmp(cmd, \"/eat\", true) == 0 )
{
    if(IsPlayerConnected(playerid))
{
   if(IsPlayerInRangeOfPoint(playerid, 1.0, 298.09832763672, 1899.9403076172, 17.339101028442))
   {
      SetPlayerHealth(playerid, 100);
      SendClientMessage(playerid,COLOR_GREEN,\"Élet feltöltve - Health replinished\");
      return 1;
   }
   if(IsPlayerInRangeOfPoint(playerid, 1.0, -134.23826599121, 1048.8264160156, 20.06208152771))
   {
      SetPlayerHealth(playerid, 100);
      SendClientMessage(playerid,COLOR_GREEN,\"Élet feltöltve - Health replenished\");
      return 1;
   }
   else
   {
       SendClientMessage(playerid, COLOR_RED, \"Katonai Étkezde elõtt kell lenned - It\'s required to be at the entrance of a military canteen.\");
   }
}

 
Valaki kérem tudna írni egy funkciós parancs szerkezetet?
pl.: /fegyvervétel
és akkor kiírja hogy Használat: /fegyvervétel [fegyver]
és alatta vannak a funkciók amiket lehet használni.
És a végén ha beírod hogy /fegyvervétel aknavetõ,akkor kapsz.
Értitek :D RP modokból próbáltam kilesni hogy néz ki egy ilyen szerkezet,de csak warnokat hoztam létre.
Próbáltam valamit összehozni,ami törli a régi fegyvereket a parancs után és kapsz egy pisztolyt.
Volt egy AK-m beírta ma parancsot és lett pisztolyom (eltûnt AK)
Csak ezután megint bírtam és nem törlõdött a pisztoly és kaptam helyette egy újat full tárral hanem hozzá adódott.
Na kb ez lenne a problémám :D
Nekem még tökéletesen megfelelne a dialog,hogy /fegyvervétel és bejön 5-6 sor,majd kiválasztod az egyiket és rákattintasz a /vétel-re,(Ugyan arra gondoltam itt mint az elõzõnél,hogy eltûnik és ha mégegyszer beírom akkor nem hozzáadja hanem visszaállítja a töltényt.) csak ehhez még kevésbé értek.
De köszönöm a leendõ válaszokat és az eddigi válaszokat!

Dupla hozzászólás automatikusan összefûzve. ( 2011. szeptember 02. - 14:37:19 )

Újabb kérdés:
Tapasztalatot akarok hozzáadni a felhasználói profilba,regisztrációhoz loginhoz beraktam.De nem tudom meghatározni hogy mitõl függ az értéke.
 
dini_IntSet(file, \"Tapasztalat\", PlayerInfo[playerid][Hours]+[pKills]);

 
Ez alatt azt akartam hogy a játszott órák és az ölések összege legyen a tapasztalat pont.
De warnokat kaptam,gondolom túl primitíven akartam megoldani.
 
D:\\SZERVER\\gamemodes\\fegyver.pwn(471) : warning 213: tag mismatch
D:\\SZERVER\\gamemodes\\fegyver.pwn(471) : error 029: invalid expression, assumed zero
D:\\SZERVER\\gamemodes\\fegyver.pwn(471) : warning 215: expression has no effect
D:\\SZERVER\\gamemodes\\fegyver.pwn(471) : error 001: expected token: \";\", but found \"]\"
D:\\SZERVER\\gamemodes\\fegyver.pwn(471) : error 029: invalid expression, assumed zero
D:\\SZERVER\\gamemodes\\fegyver.pwn(471) : fatal error 107: too many error messages on one line

 
És csináltam egy dialogos fegyverválasztást,ami még jó,de amikor a response-t akarom beállítani:
Bemásoltam Wikipédiáról a példát,sok warn lett,dialogid-t és átírtam a megfelelõre utána is warn.
 
if(response)// They pressed the first button.
    {
    switch(dialogid)// If you only have one dialog, then this isn\'t required, but it\'s neater for when you implement more dialogs.
        {
case 1:// Our dialog!
           {
              switch(listitem)// Checking which listitem was selected
           {
               case 0:// The first item listed
               {
                   if(GetPlayerMoney(playerid) < 1) return SendClientMessage(playerid, 0xFFFFFF, \"You don\'t have enough cash.\");
                   GivePlayerMoney(playerid, -1);
                   SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_SPRUNK);
               }
               case 1: // The second item listed
               {
                   if(GetPlayerMoney(playerid) < 2) return SendClientMessage(playerid, 0xFFFFFF, \"You don\'t have enough cash.\");
                   GivePlayerMoney(playerid, -2);
                   SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_BEER);
               }
               case 2: // The third item listed
               {
                   if(GetPlayerMoney(playerid) < 3) return SendClientMessage(playerid, 0xFFFFFF, \"You don\'t have enough cash.\");
                   GivePlayerMoney(playerid, -3);
                   SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_WINE);
               }
           }
        }

 
És egy rakat warn jött:
 
D:\\SZERVER\\gamemodes\\fegyver.pwn(355) : error 017: undefined symbol \"SetPlayerClass\"
D:\\SZERVER\\gamemodes\\fegyver.pwn(411) : error 004: function \"SendAdminMessage\" is not implemented
D:\\SZERVER\\gamemodes\\fegyver.pwn(797) : error 004: function \"SendAdminMessage\" is not implemented
D:\\SZERVER\\gamemodes\\fegyver.pwn(859) : error 004: function \"CarRespawn\" is not implemented
D:\\SZERVER\\gamemodes\\fegyver.pwn(914) : error 004: function \"SendAdminMessage\" is not implemented
D:\\SZERVER\\gamemodes\\fegyver.pwn(931) : error 004: function \"SendAdminMessage\" is not implemented
D:\\SZERVER\\gamemodes\\fegyver.pwn(944) : error 004: function \"SendAdminMessage\" is not implemented
D:\\SZERVER\\gamemodes\\fegyver.pwn(992) : error 004: function \"SendAdminMessage\" is not implemented
D:\\SZERVER\\gamemodes\\fegyver.pwn(1003) : error 017: undefined symbol \"Goto\"
D:\\SZERVER\\gamemodes\\fegyver.pwn(1007) : error 004: function \"SendAdminMessage\" is not implemented
D:\\SZERVER\\gamemodes\\fegyver.pwn(1039) : error 004: function \"SendAdminMessage\" is not implemented
D:\\SZERVER\\gamemodes\\fegyver.pwn(1067) : error 004: function \"SendAdminMessage\" is not implemented
D:\\SZERVER\\gamemodes\\fegyver.pwn(1146) : error 004: function \"SendAdminMessage\" is not implemented
D:\\SZERVER\\gamemodes\\fegyver.pwn(1178) : error 004: function \"SendAdminMessage\" is not implemented
D:\\SZERVER\\gamemodes\\fegyver.pwn(1215) : error 004: function \"SendAdminMessage\" is not implemented
D:\\SZERVER\\gamemodes\\fegyver.pwn(1349) : error 004: function \"SendAdminMessage\" is not implemented
D:\\SZERVER\\gamemodes\\fegyver.pwn(1386) : error 004: function \"SendAdminMessage\" is not implemented
D:\\SZERVER\\gamemodes\\fegyver.pwn(1422) : error 004: function \"SendAdminMessage\" is not implemented
D:\\SZERVER\\gamemodes\\fegyver.pwn(1595) : error 004: function \"SendAdminMessage\" is not implemented
D:\\SZERVER\\gamemodes\\fegyver.pwn(1939) : error 002: only a single statement (or expression) can follow each \"case\"
D:\\SZERVER\\gamemodes\\fegyver.pwn(1939) : warning 215: expression has no effect
D:\\SZERVER\\gamemodes\\fegyver.pwn(1942) : warning 217: loose indentation
D:\\SZERVER\\gamemodes\\fegyver.pwn(1942) : error 029: invalid expression, assumed zero
D:\\SZERVER\\gamemodes\\fegyver.pwn(1942) : error 004: function \"OnPlayerClickPlayer\" is not implemented
D:\\SZERVER\\gamemodes\\fegyver.pwn(1946) : warning 225: unreachable code
D:\\SZERVER\\gamemodes\\fegyver.pwn(1946) : error 029: invalid expression, assumed zero
D:\\SZERVER\\gamemodes\\fegyver.pwn(1946) : error 004: function \"SendAdminMessage\" is not implemented
D:\\SZERVER\\gamemodes\\fegyver.pwn(1954) : error 017: undefined symbol \"color\"
D:\\SZERVER\\gamemodes\\fegyver.pwn(1959) : error 029: invalid expression, assumed zero

 
Nem tudom hogy most miért nem jó pedig SA:MP wiki oldaláról szedtem le és bezavar valamiért olyan dolgoknak amik eddig tökéletesen mûködtek.Ha kiszedem a dialogresponsebõl ezt a részt akkor nincs warn.
« Utoljára szerkesztve: 2011. szeptember 02. - 14:37:19 írta tudvari »

Nem elérhető Stray

  • 617
    • Profil megtekintése
Fegyver Parancs
« Válasz #4 Dátum: 2011. szeptember 02. - 14:38:30 »
+1 Show voters
[pawn]if(strcmp(cmdtext, \"/evés\", true) == 0 || strcmp(cmdtext, \"/eat\", true) == 0 )
{
    if(IsPlayerConnected(playerid))
   {
       // Az \"||\" jelentése \"vagy\".
      if(IsPlayerInRangeOfPoint(playerid, 1.0, 298.09832763672, 1899.9403076172, 17.339101028442) || IsPlayerInRangeOfPoint(playerid, 1.0, -134.23826599121, 1048.8264160156, 20.06208152771))
      {
         SetPlayerHealth(playerid, 100);
         SendClientMessage(playerid,COLOR_GREEN,\"Élet feltöltve - Health replinished\");
         return 1;
      }
      else
      {
          SendClientMessage(playerid, COLOR_RED, \"Katonai Étkezde elõtt kell lenned - It\'s required to be at the entrance of a military canteen.\");
      }
   }
   return 1;
}[/pawn]
Tessék. Javítottam egy másik hibát is.
A másik:
[pawn]
new tp = PlayerInfo[playerid][Hours] + PlayerInfo[playerid][pKills];
dini_IntSet(file, \"Tapasztalat\", tp);[/pawn]
A 3-nál pedig valószínûleg több \"{\"-t használtál mint \"}\"-t. Vagyis többször nyitottad meg mint zártad. Vagy éppen fordítva.
« Utoljára szerkesztve: 2011. szeptember 02. - 14:40:54 írta straY' »

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
Fegyver Parancs
« Válasz #5 Dátum: 2011. szeptember 02. - 15:37:26 »
0 Show voters
Ok köszi,az elsõt majd kipróbálom.A 2. jó,de warning 213.Rákerestem Googleben,de ezernyi fajtája van a problémának és nem tudom orvosolni :S
Rendben megnézem a 3.at
Update: Azóta beraktam másikat,ami szintén warnos volt,nem volt kedvem kiszedni,így átnéztem a te javaslatoddal.ÉS SIKERÜLT :D:D:D Köszönöm! (Ez a 3-as volt)
Ui.: Kandaradam köszi,ennek akkor jónak kell lennie?
 
case 6: 
                {
                    TogglePlayerControllable(playerid,0);
                    SetTimerEx(\"Timer\", 10000, false, \"d\", playerid);
    ResetPlayerWeapons(playerid);
                }

 
Lefagyasztja 10 mp-re nem de?
« Utoljára szerkesztve: 2011. szeptember 02. - 15:55:52 írta tudvari »

Nem elérhető Stray

  • 617
    • Profil megtekintése
Fegyver Parancs
« Válasz #6 Dátum: 2011. szeptember 02. - 17:42:02 »
+1 Show voters
igen.

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
Fegyver Parancs
« Válasz #7 Dátum: 2011. szeptember 02. - 17:55:51 »
0 Show voters
És mi a véleményed a Warningról? fontos lenne :D
D:\\SZERVER\\gamemodes\\fegyver.pwn(395) : warning 213: tag mismatch
new xp = PlayerInfo[playerid][Hours] + PlayerInfo[playerid][pKills];
a tp-t átírtam xp-re :D

Nem elérhető Stray

  • 617
    • Profil megtekintése
Fegyver Parancs
« Válasz #8 Dátum: 2011. szeptember 02. - 18:06:38 »
+1 Show voters
Mind 2 deklarálva van? Mivel én írtam egy példát és nem lett semmi hiba.
[pawn]
enum pi {
Hours,
pKills
}
new PlayerInfo[MAX_PLAYERS][pi];
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp(\"/mycommand\", cmdtext, true, 10) == 0)
{
   new str[144];
   new xp = PlayerInfo[playerid][Hours] + PlayerInfo[playerid][pKills];
   format(str, 144, \"%i\", xp);
   return 1;
}
return 0;
}
[/pawn]
Annyit tehetsz még, hogy PM-ben elküldöd az egész kódot és átnézem, javítok rajta. Aztán visszaküldöm a javítottat.

Dupla hozzászólás automatikusan összefûzve. ( 2011. szeptember 03. - 14:37:50 )

Végülis pm-ben megoldottuk. Lehet zárni a témát.
« Utoljára szerkesztve: 2011. szeptember 03. - 14:37:50 írta straY' »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal