-
Üdv.
Nos megcsináltam egy ilyen parancsot, de bugol valamiért :/ :shurg: Valaki ötlet, hogy lehetne mûködõképes? :hmmm:
CMD:f(playerid,params[])
{
new slot, id, fegyo, ammo;
if(!strcmp(params[1],\"e\",true))
{
if(params[1])
return SendClientMessage(playerid,Red,\"Használat: /fegyver elõvesz [név / id]\");
if(params[2] == id)
if(id < 1 || id >= sizeof(aWeaponNames))
return SendClientMessage(playerid,Red,\"Nincs ilyen fegyver\");
slot = GetGunSlot(id);
GetPlayerWeaponData(playerid, slot, fegyo, ammo);
if(fegyo != id || ammo == 0)
return SendClientMessage(playerid,Red,\"Nincs ilyen fegyvered!\");
if(TiltottFegyver(id))
{
SendClientMessage(playerid,Red,\"Hoppá, ez tiltott fegyver! Legközelebb bann jár érte!\");
FegyverElvesz(playerid, id);
return 1;
}
if(IsPlayerInAnyVehicle(playerid) && (id == 22 || id == 23 || id == 24))
return SendClientMessage(playerid,Red,\"Ezt nem veheted elõ jármûben\");
Fegyvere[playerid] = id;
SetPlayerArmedWeapon(playerid, id);
SendClientMessage(playerid,-1,\"Elõvettél egy fegyvert!\");
if(id >= 24 && id <= 34)
{
ApplyAnimation(playerid,\"UZI\",\"UZI_reload\",4.0,0,0,0,0,0);
}
}//else {SendClientMessage(playerid,Red,\"/f [e]\");}
return 1;
}
Kiraktam helyetted a PREFIX-et + a code-t code=pawn-ra cseréltem.
-
Igaz, hogy a params egy tömb de ott nem számokat, hanem egy nagy szöveget tárol a cucc. Így hát, fel kell darabolnod sscanfal. A kódot pár helyen rövidítettem, optimalizáltam, hogy jobban átláthassam, így több esetleges hibát is megtaláljak benne. Remélem nem lesz baj, és remélem mûködik, és, hogy segíthettem neked!
CMD:f(playerid, params[]) return cmd_fegyver(playerid, params[]);
CMD:fegyver(playerid, params[])
{
new muvelet[8], id, slot, fegyo, ammo;
if(sscanf(params, \"s[8]\", muvelet)) return SendClientMessage(playerid, Red, \"Használat: /f(egyver) e(lõvesz) [név / id]\");
if(!strcmp(\"e\", muvelet, true) || !strcmp(\"elovesz\", muvelet, true) || !strcmp(\"elõvesz\", muvelet, true)) {
if(!sscanf(params, \"s[8]d\", muvelet, id)) {
if(id < 1 || sizeof(aWeaponNames) <= id) return SendClientMessage(playerid, Red, \"Nincs ilyen fegyver!\");
slot = GetGunSlot(id);
GetPlayerWeaponData(playerid, slot, fegyo, ammo);
if(fegyo != id || ammo == 0) return SendClientMessage(playerid, Red, \"Nincs ilyen fegyvered!\");
if(TiltottFegyver(id)) {
SendClientMessage(playerid,Red,\"Hoppá, ez tiltott fegyver! Legközelebb bann jár érte!\");
return FegyverElvesz(playerid, id), 1;
}
if(IsPlayerInAnyVehicle(playerid) && (id == 22 || id == 23 || id == 24)) return SendClientMessage(playerid,Red,\"Ezt nem veheted elõ jármûben\");
Fegyvere[playerid] = id;
SetPlayerArmedWeapon(playerid, id);
SendClientMessage(playerid, -1, \"Elõvettél egy fegyvert!\");
if(24 <= id <= 34) ApplyAnimation(playerid, \"UZI\", \"UZI_reload\", 4.0, 0, 0, 0, 0, 0);
}
}
return 1;
}
Fontos hogy meglegyen az sscanf pluginod a plugins mappában, a server.cfg-ben, és a módban includeolva is.
Sok szerencsét, további jó scriptelést! :thumbsup:
Szerk.: Most sem jó? ID-re sem? Server log-ban nem ír valami furcsát?
-
Köszi a segítséget, de még így sem akar mûködni. :shurg:
De, látom, hogy így már nem bugos a kód. :yes:
Viszont, még mindig valami nem szuperálhat benne, mivel még mindig nem akarja végrehajtani az elõvételt. :hmmm:
Nos sajnos nem írt ki semmi furcsát, csak annyi vehetõ észre, hogy nem veszi elõ.
-
:thumbsup: Viszont teljesen átalakítottam, most így néz ki:
CMD:f(playerid,params[])
{
new muvelet[30],fegyver[32],fegyvere,loszer;
if(sscanf(params,\"s[30]\",muvelet)) return SendClientMessage(playerid,-1,\"Használat: /f(egyver) e(lõvesz) k(elrak) r(eload)\");
if(Egyezik(muvelet,\"e\"))
{
if(!sscanf(params,\"s[30]s[32]\",muvelet,fegyver))
{
fegyvere = -1;
for(new w; w < 48; w++) if(strfind(aWeaponNames[w],fegyver,true) != -1){ fegyvere = w; break; }
if(fegyvere == -1) fegyvere = strval(fegyver);
if(fegyvere < 0 || fegyvere > sizeof(aWeaponNames)) return SendClientMessage(playerid,-1,\"Error: Nincs ilyen fegyver!\");
//if(pInfo[playerid][m4tar] <= 0 || pInfo[playerid][ak47tar] <= 0 || pInfo[playerid][mp5tar] <= 0 || pInfo[playerid][combattar] <= 0 || pInfo[playerid][shotguntar] <= 0 || pInfo[playerid][snipertar] <= 0 || pInfo[playerid][rifletar] <= 0 || pInfo[playerid][deagletar] <= 0 || pInfo[playerid][silencedtar] <= 0) return SendClientMessage(playerid,-1,\"Nincs tárad!\");
//if(pInfo[playerid][m4] <= 0 || pInfo[playerid][ak47] <= 0 || pInfo[playerid][mp5] <= 0 || pInfo[playerid][combat] <= 0 || pInfo[playerid][shotgun] <= 0 || pInfo[playerid][sniper] <= 0 || pInfo[playerid][rifle] <= 0 || pInfo[playerid][deagle] <= 0 || pInfo[playerid][silenced] <= 0) return SendClientMessage(playerid,-1,\"Nincs fegyvered!\");
if(Eloveve[playerid] == 0)
{
//if(!strcmp(fegyver,\"m4\",true))
if(Egyezik(fegyver,\"m4\"))
{
pInfo[playerid][m4tar] -= 1;
loszer = 50;
pInfo[playerid][m4loszer] -= loszer;
pInfo[playerid][m4] -= 1;
GivePlayerWeapon(playerid,fegyvere,50);
Eloveve[playerid] = 1;
}
}else{SendClientMessage(playerid,-1,\"Van már a kezedben fegyver!\");}
}else{SendClientMessage(playerid,-1,\"Használat: /f(egyver) e(lõvesz) [Fegyver Név / ID]\");}
}
return 1;
}
az a vicces fegyver adás parancsnán hasonlóan van, és full jó, de itt egyszerûen valamiért nem jó....
if(Eloveve[playerid] == 0)
Eddig tuti lefut, de ami benne van az már nem, hisz nem adja oda a dolgokat, de azt nem értem, ha hasonlóan mûködik a fegyveradásnál, akkor elõvételnél miért nem jó? :wall: :facepalm:
Valaki ötlet? :unsure:
[mod]Javítottam code=pawno-t code=pawn-ra[/mod]
-
megoldottam :)
-
Üdv.
Nos megcsináltam egy ilyen parancsot, de bugol valamiért :/ :shurg: Valaki ötlet, hogy lehetne mûködõképes? :hmmm:
CMD:f(playerid,params[])
{
new slot, id, fegyo, ammo;
if(!strcmp(params[1],\"e\",true))
{
if(params[1])
return SendClientMessage(playerid,Red,\"Használat: /fegyver elõvesz [név / id]\");
if(params[2] == id)
if(id < 1 || id >= sizeof(aWeaponNames))
return SendClientMessage(playerid,Red,\"Nincs ilyen fegyver\");
slot = GetGunSlot(id);
GetPlayerWeaponData(playerid, slot, fegyo, ammo);
if(fegyo != id || ammo == 0)
return SendClientMessage(playerid,Red,\"Nincs ilyen fegyvered!\");
if(TiltottFegyver(id))
{
SendClientMessage(playerid,Red,\"Hoppá, ez tiltott fegyver! Legközelebb bann jár érte!\");
FegyverElvesz(playerid, id);
return 1;
}
if(IsPlayerInAnyVehicle(playerid) && (id == 22 || id == 23 || id == 24))
return SendClientMessage(playerid,Red,\"Ezt nem veheted elõ jármûben\");
Fegyvere[playerid] = id;
SetPlayerArmedWeapon(playerid, id);
SendClientMessage(playerid,-1,\"Elõvettél egy fegyvert!\");
if(id >= 24 && id <= 34)
{
ApplyAnimation(playerid,\"UZI\",\"UZI_reload\",4.0,0,0,0,0,0);
}
}//else {SendClientMessage(playerid,Red,\"/f [e]\");}
return 1;
}
Kiraktam helyetted a PREFIX-et + a code-t code=pawn-ra cseréltem.
-
Igaz, hogy a params egy tömb de ott nem számokat, hanem egy nagy szöveget tárol a cucc. Így hát, fel kell darabolnod sscanfal. A kódot pár helyen rövidítettem, optimalizáltam, hogy jobban átláthassam, így több esetleges hibát is megtaláljak benne. Remélem nem lesz baj, és remélem mûködik, és, hogy segíthettem neked!
CMD:f(playerid, params[]) return cmd_fegyver(playerid, params[]);
CMD:fegyver(playerid, params[])
{
new muvelet[8], id, slot, fegyo, ammo;
if(sscanf(params, \"s[8]\", muvelet)) return SendClientMessage(playerid, Red, \"Használat: /f(egyver) e(lõvesz) [név / id]\");
if(!strcmp(\"e\", muvelet, true) || !strcmp(\"elovesz\", muvelet, true) || !strcmp(\"elõvesz\", muvelet, true)) {
if(!sscanf(params, \"s[8]d\", muvelet, id)) {
if(id < 1 || sizeof(aWeaponNames) <= id) return SendClientMessage(playerid, Red, \"Nincs ilyen fegyver!\");
slot = GetGunSlot(id);
GetPlayerWeaponData(playerid, slot, fegyo, ammo);
if(fegyo != id || ammo == 0) return SendClientMessage(playerid, Red, \"Nincs ilyen fegyvered!\");
if(TiltottFegyver(id)) {
SendClientMessage(playerid,Red,\"Hoppá, ez tiltott fegyver! Legközelebb bann jár érte!\");
return FegyverElvesz(playerid, id), 1;
}
if(IsPlayerInAnyVehicle(playerid) && (id == 22 || id == 23 || id == 24)) return SendClientMessage(playerid,Red,\"Ezt nem veheted elõ jármûben\");
Fegyvere[playerid] = id;
SetPlayerArmedWeapon(playerid, id);
SendClientMessage(playerid, -1, \"Elõvettél egy fegyvert!\");
if(24 <= id <= 34) ApplyAnimation(playerid, \"UZI\", \"UZI_reload\", 4.0, 0, 0, 0, 0, 0);
}
}
return 1;
}
Fontos hogy meglegyen az sscanf pluginod a plugins mappában, a server.cfg-ben, és a módban includeolva is.
Sok szerencsét, további jó scriptelést! :thumbsup:
Szerk.: Most sem jó? ID-re sem? Server log-ban nem ír valami furcsát?
-
Köszi a segítséget, de még így sem akar mûködni. :shurg:
De, látom, hogy így már nem bugos a kód. :yes:
Viszont, még mindig valami nem szuperálhat benne, mivel még mindig nem akarja végrehajtani az elõvételt. :hmmm:
Nos sajnos nem írt ki semmi furcsát, csak annyi vehetõ észre, hogy nem veszi elõ.
-
:thumbsup: Viszont teljesen átalakítottam, most így néz ki:
CMD:f(playerid,params[])
{
new muvelet[30],fegyver[32],fegyvere,loszer;
if(sscanf(params,\"s[30]\",muvelet)) return SendClientMessage(playerid,-1,\"Használat: /f(egyver) e(lõvesz) k(elrak) r(eload)\");
if(Egyezik(muvelet,\"e\"))
{
if(!sscanf(params,\"s[30]s[32]\",muvelet,fegyver))
{
fegyvere = -1;
for(new w; w < 48; w++) if(strfind(aWeaponNames[w],fegyver,true) != -1){ fegyvere = w; break; }
if(fegyvere == -1) fegyvere = strval(fegyver);
if(fegyvere < 0 || fegyvere > sizeof(aWeaponNames)) return SendClientMessage(playerid,-1,\"Error: Nincs ilyen fegyver!\");
//if(pInfo[playerid][m4tar] <= 0 || pInfo[playerid][ak47tar] <= 0 || pInfo[playerid][mp5tar] <= 0 || pInfo[playerid][combattar] <= 0 || pInfo[playerid][shotguntar] <= 0 || pInfo[playerid][snipertar] <= 0 || pInfo[playerid][rifletar] <= 0 || pInfo[playerid][deagletar] <= 0 || pInfo[playerid][silencedtar] <= 0) return SendClientMessage(playerid,-1,\"Nincs tárad!\");
//if(pInfo[playerid][m4] <= 0 || pInfo[playerid][ak47] <= 0 || pInfo[playerid][mp5] <= 0 || pInfo[playerid][combat] <= 0 || pInfo[playerid][shotgun] <= 0 || pInfo[playerid][sniper] <= 0 || pInfo[playerid][rifle] <= 0 || pInfo[playerid][deagle] <= 0 || pInfo[playerid][silenced] <= 0) return SendClientMessage(playerid,-1,\"Nincs fegyvered!\");
if(Eloveve[playerid] == 0)
{
//if(!strcmp(fegyver,\"m4\",true))
if(Egyezik(fegyver,\"m4\"))
{
pInfo[playerid][m4tar] -= 1;
loszer = 50;
pInfo[playerid][m4loszer] -= loszer;
pInfo[playerid][m4] -= 1;
GivePlayerWeapon(playerid,fegyvere,50);
Eloveve[playerid] = 1;
}
}else{SendClientMessage(playerid,-1,\"Van már a kezedben fegyver!\");}
}else{SendClientMessage(playerid,-1,\"Használat: /f(egyver) e(lõvesz) [Fegyver Név / ID]\");}
}
return 1;
}
az a vicces fegyver adás parancsnán hasonlóan van, és full jó, de itt egyszerûen valamiért nem jó....
if(Eloveve[playerid] == 0)
Eddig tuti lefut, de ami benne van az már nem, hisz nem adja oda a dolgokat, de azt nem értem, ha hasonlóan mûködik a fegyveradásnál, akkor elõvételnél miért nem jó? :wall: :facepalm:
Valaki ötlet? :unsure:
[mod]Javítottam code=pawno-t code=pawn-ra[/mod]
-
megoldottam :)