-
Üdv mindenkinek! Már félek ide írni :D Mostanában sokat kérek segítséget, de az a gond, hogy magamtól ezt nem tudom megtanulni és szükséges lenne... Azt szeretném megkérdezni, hogy, hogy tudok olyan parancsokat írni, amivel egy megadott ID-re adsz dolgot!pl /adpénz [playerid] [összeg]...De most nem a parancs számítana, hanem az, hogy aki segít az próbálja velem megértetni :D Mert ezeket nem bírom megérteni...Van egy ilyen parancsom, hogy:
CMD:adfegyver(playerid,params[])
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,5,\"Nem vagy RCON ADMIN !\");
new target,weaponid,tolteny,str[200];
if(sscanf(params,\"ddd\",target,weaponid,tolteny)) return SendClientMessage(playerid,0xFFFF00AA,\"Használat : /adfegyver [iD] [Fegyverid][Tölteny]\");
if(weaponid < 1 || weaponid > 46) return SendClientMessage(playerid,0xAA3333AA,\"Csak 1-46 közt lehetnek a fegyverek!\");
format(str,sizeof(str),\"Fegyvert adtál neki : %s , Fegyver ID:%d, Töltény:%d\",pName(playerid),weaponid,tolteny);
SendClientMessage(playerid,0xFFFF00AA,str);
format(str,sizeof(str),\"Fegyvert kaptál tõle : %s\",pName(playerid));
SendClientMessage(target,0xFFFF00AA,str);
GivePlayerWeapon(target,weaponid,tolteny);
return 1;
}
Ezt sem értem, hogy miért így és hogyan... Aki segítene, hogy megértsem ezt a dolgot, annak köszönöm!
-
Magyarázat kell?
CMD:adfegyver(playerid,params[]) // maga a parancs
{ // nyitás
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,5,\"Nem vagy RCON ADMIN !\"); // ha nem admin nem használhatja
new target,weaponid,tolteny,str[200]; // változók
if(sscanf(params,\"ddd\",target,weaponid,tolteny)) return SendClientMessage(playerid,0xFFFF00AA,\"Használat : /adfegyver [iD] [Fegyverid][Tölteny]\"); // sscanf = Ha csak annyit ír be: /adfegyver akkor kiírjuk a használatát (bõvebben a leírásokban)
if(weaponid < 1 || weaponid > 46) return SendClientMessage(playerid,0xAA3333AA,\"Csak 1-46 közt lehetnek a fegyverek!\"); // ha nem 1-46-ig van a fegyverid akkor nem használhatja
format(str,sizeof(str),\"Fegyvert adtál neki : %s , Fegyver ID:%d, Töltény:%d\",pName(playerid),weaponid,tolteny); // üzenet formázás
SendClientMessage(playerid,0xFFFF00AA,str); // üzenet elküldése
format(str,sizeof(str),\"Fegyvert kaptál tõle : %s\",pName(playerid)); // formázás
SendClientMessage(target,0xFFFF00AA,str); // elküldés
GivePlayerWeapon(target,weaponid,tolteny); // fegyver adás a beírt id-nek
return 1; // visszatérés
} // lezárás
a new target az a játékos akinek adjuk a fegyvert.
-
Köszönöm, adnám a +-t de nem tudom, hogy kell...Ha leírod adom, a témát még nem zárom le, mert még lehet írok, csak most megpróbálkozok egy saját iesmi scriptel.
-
Amúgy rosszul van csinálva. Mert így úgy fog mûködni, hogyha a játékos NEM admin akkor használni tudja Tehát így a helyes:
if(IsPlayerAdmin(playeridÖÖ return SendClientMessage(playerid, -1, \"Nem vagy RCON admin!\");
Amúgy van egy kis felfele mutató kéz arra katt úgy tudsz +adni
-
Ment a +, és megírtam egy skin váltót :D Full király!Köszönöm a segítséget, amm nekem jó a mostani if(!IsPlayerAdmin(playerid))-vel, és nem tudja csak az adsmin használni...A témát nem zárom, mert bárkinek kellhet még valami, még akár nekem is:) Szóval még ez jól jöhet!
-
Amúgy rosszul van csinálva. Mert így úgy fog mûködni, hogyha a játékos NEM admin akkor használni tudja Tehát így a helyes:
if(IsPlayerAdmin(playeridÖÖ return SendClientMessage(playerid, -1, \"Nem vagy RCON admin!\");
Amúgy van egy kis felfele mutató kéz arra katt úgy tudsz +adni
Az IsPlayerAdmin akkor ad vissza 1-es értéket ha RCON ADMIN.
Ez jól van megcsinálva.A tiéd mûködik úgy.
[mod]Azért kicsit kulturáltabban![/mod]
-
Az !IsPlayerAdmin funkció az azt jelenti, hogy ha nem admin akkor visszatér egy üzenettel. Onnantól már csak az adminra vonatkozó dolgok vannak. Hidd el, nekem is így vannak a scriptejim megírva és tökéletesen mûködik.
Nincsmit ppatrik, bármi kérdésed van nyugodtan jöhet.
-
CMD:adfegyver(playerid,params[])
{
// a playerid játékos rcon admin vizsgálata (playerid annak a játékosnak az azonosítószáma aki beírta a parancsot.
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 5, \"Nem vagy RCON ADMIN !\");
// Lehetséges változók létrehozása melyek tárolni fogják a beírt adatokat.
new
target,
weaponid,
tolteny;
// plugin sscanf segítségével a beírt karakterlánc feldarabolása (params) és elhelyezése a létrehozott változókban
// a D(-1) jelölés opcionális paraméter melyet nem kötelezõ beírni a parancs részeként, alapértéknek 1-et adtam meg
// az u jelölés lehetõvé teszi a parancs használatát játékos név beírására is pl.: /adfegyver king 21
if(sscanf(params, \"udD(1)\", target, weaponid, tolteny)) return SendClientMessage(playerid, 0xFFFF00AA, \"Használat : /adfegyver [iD] [Fegyverid][Tölteny]\");
// a megadott weaponid ellenõrzése hogy 1 és 46 és közti szám legyen
if(weaponid < 1 || weaponid > 46) return SendClientMessage(playerid, 0xAA3333AA, \"Csak 1-46 közt lehetnek a fegyverek!\");
// fegyver odaadása a játékosnak
GivePlayerWeapon(target,weaponid,tolteny);
// üzenet megjelenítése annak aki beírta a parancsot és annak aki a fegyvert kapja
new
str[128];
format(str,sizeof(str),\"Fegyvert adtál neki : %s , Fegyver ID:%d, Töltény:%d\",pName(playerid),weaponid,tolteny);
SendClientMessage(playerid,0xFFFF00AA,str);
format(str,sizeof(str),\"Fegyvert kaptál tõle : %s\",pName(playerid));
SendClientMessage(target,0xFFFF00AA,str);
return 1;
}
-
Lenne még 1 kérdésem...Ezt ez alapján írtam...De a jármûvet nem telézi ide...
CMD:v(playerid, params[]) {
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0606FF,\"Nem vagy RCON ADMIN!\");
new Float: x, y, z, c;
new vehicleid, str[200];
if(sscanf(params,\"d\",vehicleid)) return SendClientMessage(playerid,0xFF0606FF,\"Használat: /v [Jármû ID]\");
format(str,sizeof(str),\"Lekértél egy jármûvet!ID-je: %d!\", vehicleid);
SendClientMessage(playerid,0xFF0606FF,str);
if(vehicleid < 411 || vehicleid > 611) return SendClientMessage(playerid,-1,\"Csak 411-611-es ID-k!\");
CreateVehicle(vehicleid,x+1,y+1,z+1,c+1,0,3,900000);
return 1;
}
Aki segít annak köszönöm!
-
CMD:v( playerid, params[] )
{
if( IsPlayerAdmin( playerid ) )
{
new
Float: fPos[ 4 ],
iVehicleID,
szMessage[ 50 ];
if( sscanf( params, \"d\", iVehicleID ) ) return SendClientMessage( playerid, 0xFF0606FF, \"Használat: /v [Jármû ID]\" );
if( iVehicleID < 411 || iVehicleID > 611 ) return SendClientMessage( playerid, -1, \"Csak 411-611-es ID-k!\" );
GetPlayerPos( playerid, fPos[ 0 ], fPos[ 1 ], fPos[ 2 ] );
GetPlayerFacingAngle( playerid, fPos[ 3 ] );
format( szMessage, sizeof( szMessage ), \"Lekértél egy jármûvet!ID-je: %d!\", iVehicleID );
SendClientMessage( playerid, 0xFF0606FF, szMessage );
CreateVehicle( iVehicleID, fPos[ 0 ] + 4, fPos[ 1 ], fPos[ 2 ], fPos[ 3 ], 0, 3, 900000 );
}
else SendClientMessage( playerid, 0xFF0000AA, \"HIBA: Nem vagy RCon admin.\" );
return 1;
}
-
Köszönöm, de az pl. hogy lehetne, hogy lehívok egy kocsit, és egybõl bele is száljon, és ha lehív még1-et akkor az az elõtti eltûnjön...Erre nem jövök rá...
-
PutPlayerInVehicle
DestroyVehicle
-
Bele írnád légyszi a scriptbe?
-
Nem teszteltem, de talán így:
new
v_car[MAX_PLAYERS];
public
OnPlayerConnect(playerid)
{
v_car[playerid] = 0;
return 1;
}
CMD:v(playerid, params[])
{
if(!IsPlayerAdmin(playerid)) SendClientMessage(playerid, 0xFF0000AA, \"HIBA: Nem vagy RCon admin.\");
else
{
new
Float:fpos[4],
modelid,
msg[50];
if(sscanf(params, \"d\", modelid) || !(400 <= modelid <= 611)) return SendClientMessage(playerid, 0xFF0606FF, \"Használat: /v [Jármû ID 400-611]\");
GetPlayerPos(playerid, fpos[0], fpos[1], fpos[2]);
GetPlayerFacingAngle(playerid, fpos[3]);
format(msg, sizeof msg, \"Lekértél egy jármûvet!ID-je: %d!\", modelid);
SendClientMessage(playerid, 0xFF0606FF, msg);
if(v_car[playerid]) DestroyVehicle(v_car[playerid]);
v_car[playerid] = CreateVehicle(modelid, fpos[0] + 4, fpos[1], fpos[2], fpos[3], random(255), random(255), 900000);
PutPlayerInVehicle(playerid, v_car[playerid], 0);
}
return 1;
}
-
Köszönöm!Mûködik!
-
Szívesen nincs mit.
Egyet elfelejtettem:
public
OnPlayerDisconnect(playerid, reason)
{
if(v_car[playerid]) DestroyVehilce(v_car[playerid]);
return 1;
}