Oder du machst es ganz oben in deinem OnPlayerCommandText public:
if(imdm[playerid] && strcmp(cmdtext,"/leave",true)==-1) return SendClientMessage(playerid,FARBE,"Du musst /leave machen um bla bla bla");
Beiträge von KeksOfDeath
-
-
Wenn der Anticheat in einem anderen Script (FS oder GM) ist, dann wird das auch nix
-
gLeader+gTeam Hilfe
Ich denke mal, dass du damit was anfangen kannst... -
dcmd_autospawn(playerid,params[]) {
if(!strlen(params)) return SendClientMessage(playerid,FARBE,"/autospawn FahrzeugID oder Fahrzeugname");
new autonamen[][]= {
"Landstalker", "Bravura", "Buffalo", "Linerunner", "Perenniel", "Sentinel", "Dumper", "Feuertruck 1",
"Müllauto", "Stretch", "Manana", "Infernus", "Voodoo", "Pony", "Mule", "Cheetah", "Krankenwagen",
"Leviathan", "Moonbeam", "Esperanto", "Taxi", "Washington", "Bobcat", "Eiswagen", "BF Injection",
"Hunter", "Premier", "Enforcer", "Sicherheitsauto", "Banshee", "Predator", "Bus", "Rhino", "Barracks",
"Hotknife", "Article Trailer", "Previon", "Coach", "Cabbie", "Stallion", "Rumpo", "RC Bandit",
"Romero", "Packer", "Monster Truck", "Admiral", "Squallo", "Seasparrow", "Pizzaboy", "Tram",
"Article Trailer 2", "Turismo", "Speeder", "Reefer", "Tropic", "Flatbad", "Yankee", "Caddy", "Soliar",
"Berkley's RC Van", "Skimmer", "PCJ-600", "Faggio", "Freeway", "RC Baron", "RC Raider", "Glendale",
"Oceanic", "Sanchez", "Sparrow", "Patriot", "Quad", "Kuestenwache", "Dinghy", "Hermes", "Sabre",
"Rustler", "ZR-350", "Walton", "Regina", "Comet", "BMX", "Burrito", "Camper", "Marquis", "Baggage",
"Dozer", "Maverick", "SAN News Maverick", "Rancher", "FBI Rancher", "Virgo", "Greenwood", "Jetmax",
"Hotring Racer 1", "Sandking", "Balista Compact", "Polizei Maverick", "Boxville", "Benson", "Mesa",
"RC Goblin", "Hotring Racer 2", "Hotring Racer 3", "Bloodring Banger", "Rancher", "Super GT", "Elegant",
"Journey", "Fahrrad", "Mountain Bike", "Beagle", "Cropduster", "Stuntflugzeug", "Benzin Tanker",
"Roadtrain", "Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra", "FCR-900", "NRG-500", "HPV-1000",
"Zement Truck", "Abschlepper", "Fortune", "Cadrona", "FBI Truck", "Willard", "Gabelstabler",
"Traktor", "Maehdrescher", "Feltzer", "Remington", "Slamvan", "Blade", "Brownstreak", "Freight",
"Vortex", "Vincent", "Bullet", "Clover", "Sadler", "Feuertruck 2", "Hustler", "Intruder", "Primo",
"Cargobob", "Tampa", "Sunrise", "Merit", "Utility Van", "Nevada", "Yosemite", "Windsor",
"Monster Truck", "Monster Truck", "Uranus", "Jester", "Sultan", "Stratum", "Elegy", "Raindance",
"RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito", "Freight Flat Trailer", "Streak Trailer",
"Kart", "Mower", "Dune", "Sweeper", "Broadway", "Tornado", "AT400", "DFT-30", "Huntley", "Stafford",
"BF-400", "Nachrichten Van", "Tug", "Benzin Anhaenger", "Emperor", "Wayfarer", "Euros", "Hotdog",
"Club", "Freight Box Trailer", "Article Trailer 3", "Andromada", "Dodo", "RC Cam", "Launch",
"Polizeiauto LSPD", "Polizeiauto SFPD", "Polizeiauto LVPD", "Ranger", "Picador", "Wasserwerfer",
"Alpha", "Phoenix", "Glendale Shit", "Sadler Shit", "Baggage Trailer 1", "Baggage Trailer 2",
"Tug Stairs Trailer", "Boxburg", "Farm Trailer", "Utility Trailer" }, id, geht;
for(new i, j=strlen(params); i<j; i++) {
if((params[i]<0 || params[i]>9) && params[i]!=' ') {
geht++;
i=j; }}
if(!geht) {
id=strval(params); }
else {
for(new m=0; m<211; m++) {
if(strfind(autonamen[m],params,true)==0) {
id=m+400; }}}
if(id>=400 && id<=611) {
new Float:x, Float:y, Float:z, gla, Float:za, s[50];
format(s,sizeof(s),"Du hast eine/n %s gespawnt",autonamen[id-400]);
SendClientMessage(playerid,FARBE,s);
GetPlayerPos(playerid,x,y,z); GetPlayerFacingAngle(playerid,za);
gla=CreateVehicle(id,x+2,y,z,za,random(127),random(127),-1);
LinkVehicleToInterior(gla,GetPlayerInterior(playerid)); }
else { SendClientMessage(playerid,rot,"Inkorrekte Fahrzeug ID"); }
return 1;
} -
if(strcmp(cmdtext,"/back",true)==0) {
new name[MAX_PLAYER_NAME], s[50];
GetPlayerName(playerid,name,sizeof(name));
format(s,sizeof(s),"%s ist vom AFK zurück",name);
SendClientMessageToAll(FARBE,s);
TogglePlayerControllable(playerid,1);
return 1;
} -
GetVehicleHealth(nearest_vehicle, fedit);
GivePlayerMoney(playerid, -1000-floatround(fedit)); -
Ich würds aber immernoch anders machen, so würde auch nur die ID 0 gekickt werden (sofern sie online ist)
for(new i =0; i < MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i)) {
Kick(i); }
} -
Alta bin ich froh, dass du lebst
Willkommen zurück -
Du solltest das "playerid" ausm forward löschen und nicht das ganze forward löschen^^
-
public payday()//beim forward auch das playerid entfernen
{
for(new i; i<MAX_PLAYERS; i++) {
if(IsPlayerConnected(i)) {
GivePlayerMoney(i,10000);
SetPlayerScore(i,GetPlayerScore(i)+1);
GameTextForPlayer(i,"ZAHLTAG",5000,3);
}}
return 1;
} -
Das einzige, was mir jetzt noch einfallen würde, wäre es so zu machen:
new save[128], i, st, ziel;
save=strget(cmdtext,1);
//oder:
format(save,sizeof(save),"%s",strget(cmdtext,1));
Es dürfte zwar eigentlich nichts ändern, aber ein Versuch ist es wert -
Hatte eine ")" zu viel in Zeile 1341
new save[128]=strget(cmdtext,1), i, st, ziel;
Aber in 1340 ist eigentlich nichts falsch, zumindest sehe ich keinen FehlerPS: Und du hast "save" bereits deklariert, irgendwo anders (vllt am Anfang des publics? oder global?)
-
Einfach nur strget angewendet^^
strget(text,nummer des leerzeichens)
Bei dem Text "Seife schmeckt nicht", würde in "strget(text,0)" nur "Seife" drinne stehen, bei "strget(text,1)" würde "schmeckt" drinne stehen
Wenn ich jetzt den Text "/makeleader 1 1" habe, dann steht bei "strget(text,1)" eine "1" drinne und ich kann sie per strval auslesen (in ein Integer umwandeln)PS: Wäre nett, wenn du die Errorzeilen mal markierst
-
if(!strcmp(strget(cmdtext,0),"/makeleader"))
{
if(pInfo[playerid][alevel] == 5)
{
if(!strlen(strget(cmdtext,2))) return SendClientMessage(playerid,FARBE,"/makeleader [ID/NAME] [TEAMID]");
new save[128]=strget(cmdtext,1)), i, st, ziel;
for(st=strlen(save); i<st; i++) {
if((save[i]<0 ||save[i]>9) && save[i]!=' ') {
ziel++;
i=st; }}
if(ziel) {
new name[MAX_PLYER_NAME];
for(i=0; i<MX_PLAYERS; i++) {
if(IsPlayerConnected(i)) {
GetPlayerName(i,name,sizeof(name));
if(strfind(name,save,true)==0) {
ziel=i; }}}}
else { ziel=strval(save); }
if(IsPlayerConnected(ziel))
{
new teamid = strval(strget(cmdtext,2));
if(teamid>=0 && teamid<=10) {
GetPlayerName(ziel,save,sizeof(save));
format(save,sizeof(save),"%s.ini",save);//ich weiß ja nicht, ob die accoun ts bei dir in nem speziellen ordner sind und ob du überhaupt ini verwendest, musst also vllt ändern
gLeader[ziel] = teamid;
if(teamid==0) { SetPlayerSkin(ziel,101);}
if(teamid==1) { dini_IntSet(save,"COP",1);SetPlayerSkin(ziel,281);}
if(teamid==2) { dini_IntSet(save,"FBI",1);SetPlayerSkin(ziel,286);}
if(teamid==3) { dini_IntSet(save,"ARMY",1);SetPlayerSkin(ziel,287);}
if(teamid==4) { dini_IntSet(save,"SANNEWS",1);SetPlayerSkin(ziel,227);}
if(teamid==5) { dini_IntSet(save,"TAXI",1);SetPlayerSkin(ziel,185);}
if(teamid==6) { dini_IntSet(save,"YAKUZA",1);SetPlayerSkin(ziel,120);}
if(teamid==7) { dini_IntSet(save,"LCN",1);SetPlayerSkin(ziel,113);}
if(teamid==8) { dini_IntSet(save,"HITMAN",1);SetPlayerSkin(ziel,124);}
if(teamid==9) { dini_IntSet(save,"STADTREINIGUNG",1);SetPlayerSkin(ziel,158);}
if(teamid==10) { dini_IntSet(save,"FAHRLEHRER",1);SetPlayerSkin(ziel,17);}
SendClientMessage(ziel,dunkelblau,"Herzlichen Glückwunsch, du bist nun Mitglied einer Fraktion!");
}
else { SendClientMessage(playerid,FARBE,"Teamid muss zwischen 0 und 10 sein"); }}
else { SendClientMessage(playerid,FARBE,"ID nicht vergeben"); }}
else
{
SendClientMessage(ziel,dunkelblau,"Du bist kein Administrator Level [5]!");
}
return 1;
} -
Der Error kann eig nicht kommen, du musst es genau so einfügen in OnGameModeInit:
DisableInteriorEnterExits();
Und das mit nem Punkt und buygun, dafür müsste ich wissen, wie du Parameter ausliest, sonst bau ich dir da i-nen Code und der ist nicht kompatibel mit deim Script, aber egal, ich versuchs einfach mal auf gut Glück:
//OnPlayerCommandText:
dcmd(buygun,6,cmdtext);
//außerhalb eines callbacks:
dcmd_buygun(playerid,params[]) {
if(!strlen(strget(params,1))) return SendClientMessage(playerid,FARBE,"/buygun Waffe Munition");
new wid, geht, i, s[128]=strget(params,0)), st=strlen(s), waffennamen[][]= {
"Schlagring", "Golfschläger", "Schlagstock", "Messer", "Baseball Schläger", "Schaufel",
"Billiard Schläger", "Katana", "Kettensäge", "Dildo", "Dildo", "Dildo", "Dildo", "Blumen",
"Stock", "Granate", "Rauchgranate", "Molotov Cocktail", " ", " ", " ", "9mm", "Schallgedämpfte 9mm",
"Deagle", "Schrotflinte", "Abgesägte Schrotflinte", "SPAZ-12", "Mac10", "Mp5", "Ak47", "M4", "Tec9",
"Gewehr", "Sniper", "Raketenwerfer", "Skorpion", "Flammenwerfer", "Minigun", "Rucksackbombe",
"Zünder", "Pfefferspray", "Feuerlöscher", "Kamera", "Nachtsichtgerät", "Infrarotbrille",
"Fallschirm" };
for(; i<st; i++) {
if((params[i]<0 || params[i]>9) && params[i]!=' ') {
geht=1; }}
if(geht) {
for(i=0, st=sizeof(waffennamen); i<st; i++) {
if(strfind(s,waffennamen[i],true)==0) {
wid=i+1; }}}
else { wid=strval(s); }
st=strval(strget(params,1));
if(st>=1 && st<=10000) {
GivePlayerWeapon(playerid,wid,st); }
return 1;
} -
Zu dem mit den Kegeln:
//OnGameModeINit:
DisableInteriorEnterExists();
Das mit dem "/buy"
Dafür müsste man jetzt wissen wie du Parameter ausliest (dcmd, strtok, strget, sscanf) -
Sorry, hab meine Glaskugel verkauft
Problem wirst du leider doch genauer beschreiben müssen -
Wie oft hast du die eingefügt? o.o
Das darf naürlich nur 1 mal im Script stehen -
Achso, ja, in Zeile 22 musst du auch noch das einfügen:
imdm[i]=0;
PS: Habs oben geändert, war nochn kleiner Fehler drinne -
Sorry, die Teams brauchte ich doch nciht, war ein Denkfehler, egal
//ganz nach oben:
#define alleteams 14
forward gewinncheck();
new gewt, imdm[alleteams];
//Wenn alle da rein geportet werden:
gewt=SetTimer("gewinncheck",2000,1);
und du musst natürlich die Variable (imdm) für jeden Spieler, der im Team ist um 1 erhöhen, Beispiel:
gewt=SetTimer("gewinncheck",2000,1);
for(new i; i<MAX_PLAYERS; i++) {
imdm[gTeam[i]]++; }//falls du gTeam verwendest
//ganz nachn unten:
public gewinncheck() {
new x, i;
for(; i<alleteams; i++) {
if(imdm[i]>=1) {
x++; }}
if(x) {
for(i=0; i<alleteams; i++) {
if(imdm[i]>=1) {
new s[100];
format(s,sizeof(s),"Das Team %d hat gewonnen",i);
SendClientMessageToAll(FARBE,s);
imdm[i]=0;
x=i;
i=alleteams; }}
for(i=0; i<MAX_PLAYERS; i++) {
if(IsPlayerConnected(i)) {
if(gTeam[i]==x) {//sofern du gTeam verwendest^^
GivePlayerMoney(i,SUMME); }}}
KillTimer(gewt); }
PS: Funktioniert nur, wenn du deine 14 Teams von 0 bis 13 durchnummeriert hast, sollte es von 1 bis 14 sein, musst du "alleteams" als 15 deklarieren und dort, wo du die "imdm" Varaible hochrechnest überprüfewn, dass sie nciht das Team 0 haben
Sollte es anders nummeriert sein (1,5,8,59,...) dann funzt es nicht