[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Danke es geht nun, aber weili ch jetzt noch einen Timer machen will, kommt nun ein Error:
ocmd:kick(playerid,params[])
{
if(SpielerInfo[playerid][Alevel] >= 1)
{
new pID,string[256],aname[MAX_PLAYER_NAME],SpielerName[MAX_PLAYER_NAME],grund[256];
GetPlayerName(pID,SpielerName,sizeof(SpielerName));
GetPlayerName(playerid,aname,sizeof(aname));
if(sscanf(params,"us",pID,grund))return SendClientMessage(playerid, Rot,"[FEHLER]{FFFFFF} Benutze: /Kick [ID/Name] [Grund]");
format(string,sizeof(string),"[INFO]{FFFFFF} %s %s hat %s gekickt. Grund: %s",GetPlayerAdminRankName(playerid),aname,SpielerName,grund);
SendClientMessageToAll(Rot,string);
Kick(pID) = SetTimerEx("Kicken",100,0, "i", playerid);//Fehler: must be lvalue (non-constant)
}
return 1;
} -
Kick(pID) = SetTimerEx("Kicken",100,0, "i", playerid);//Fehler: must be lvalue (non-constant)
Das geht ja auch nicht, du kannst der Funktion Kick(pID) doch keinen Wert zuweisen
Willst du ihn in 100ms Kicken?
Dann muss das so aussehen:
SetTimerEx("Kicken",100,0,"i",pID);
//Und dann bei Kicken
forward Kicken(i);
public Kicken(i) return Kick(i);mfg.

-
SetTimerEx("Kicken",100,0,"i",pID);
Geht leider immer noch nicht.. gleicher error:
ocmd:kick(playerid,params[])
{
if(SpielerInfo[playerid][Alevel] >= 1)
{
new pID,string[256],aname[MAX_PLAYER_NAME],SpielerName[MAX_PLAYER_NAME],grund[256];
GetPlayerName(pID,SpielerName,sizeof(SpielerName));
GetPlayerName(playerid,aname,sizeof(aname));
if(sscanf(params,"us",pID,grund))return SendClientMessage(playerid, Rot,"[FEHLER]{FFFFFF} Benutze: /Kick [ID/Name] [Grund]");
format(string,sizeof(string),"[INFO]{FFFFFF} %s %s hat %s gekickt. Grund: %s",GetPlayerAdminRankName(playerid),aname,SpielerName,grund);
SendClientMessageToAll(Rot,string);
Kicken(pID) = SetTimerEx("Kicken",100,0,"i",pID);
}
return 1;
} -
Kicken(pID) =
Einfach das löschen
-
-
okay.. aber jetzt wird der Spielern icht mehr gekickt..
ocmd:kick(playerid,params[])
{
if(SpielerInfo[playerid][Alevel] >= 1)
{
new pID,string[144],aname[MAX_PLAYER_NAME],SpielerName[MAX_PLAYER_NAME],grund[128];
GetPlayerName(pID,SpielerName,sizeof(SpielerName));
GetPlayerName(playerid,aname,sizeof(aname));
if(sscanf(params,"us",pID,grund))return SendClientMessage(playerid, Rot,"[FEHLER]{FFFFFF} Benutze: /Kick [ID/Name] [Grund]");
format(string,sizeof(string),"[INFO]{FFFFFF} %s %s hat %s gekickt. Grund: %s",GetPlayerAdminRankName(playerid),aname,SpielerName,grund);
SendClientMessageToAll(Rot,string);
SetTimerEx("Kicken",100,0,"i",pID);
}
return 1;
}Du kannst auch diese Include verwenden, dann musst du nicht bei jedem Kick/Ban den Timer selbst setzen: [ INCLUDE ] Kick/Ban Fix
-
Hallo ich hane mal eine kleine Frage wenn ich ein aduty Befehl machen will muss ich die eine globale variable machen also
new adminduty [MAX_PLAYERS
oder hier
enum playerInfo{
eingeloggt,
level,
db_id,
alevel,
slevel,
Skin,
fraktion,
rang,
spawnchange
} -
Das bleibt dir überlassen. Wie du es lieber hast. Beides ist möglich.
-
Was wäre vom ding her einfacher bzw besser ?
-
-
Bei der ersten Variante hast du ein paar Buchstaben weniger zu schreiben. Alles andere ist völlig identisch.
Es ist absolut egal wie du es machst. Weder von den Ressourcen noch von sonst irgendwas unterscheiden sich die beiden Methoden.
-
Moin,
ich bin es wieder :3, undzwar: Ich habe vor kurzen ein Privatautosystem per MYSQL gemacht, und wie mache ich dass jetzt das man nur 1 Privatauto haben darf?
-
Du musst in der Datenbank mit SELECT abfragen, ob bereits ein Fahrzeug mit dem Name des Spielers erstellt worden ist.
Beispiel:
format(query, 128, "SELECT * FROM deinetabelle WHERE name = '%s'", SpielerName(playerid));Wenn dann eine Zeile zurückgegeben wird (also der cache nicht leer ist), hat der Spieler bereits ein Fahrzeug.
-
okay, und ich möchte es so machen dass wenn man Level 5 ist dass man ein Auto + habe nkann , wie geht dass jetzt?
-
okay, und ich möchte es so machen dass wenn man Level 5 ist dass man ein Auto + habe nkann , wie geht dass jetzt?
Dann musst du abfragen ob weniger als zwei Zeilen vorhanden sind:
new rows = cache..//selbst mit deinen Werten ausfüllen
if(rows == 1 && SpielerInfo[playerid][Level] != 5)
{
//hat bereits eins
}
else if(rows == 2 && SpielerInfo[playerid][Level] == 5)
{
//hat bereits eins
}
else
{
//darf eins erstellen
} -
Hallo, ich habe mir einen kleinen givegun Befehl geschrieben, kann aber jetzt gut 1 Woche lange nicht Testen, weil ich an keinen Computer mit SAMP komme und wollte fragen ob das so funktionieren würde!
Errors bekomme ich keine!ocmd:givegun(playerid,params[])
{
if(PlayerInfo[playerid][pAdmin] >= 3)
{
new gname[50],pID,munni,str[30],gweapon;
if(sscanf(params,"dsd",pID,gname,munni))return SCM(playerid,frot,"[FEHLER]: /givegun [PlayerID][Name][Munition]");
if(strcmp(gname,"messer",false)){format(str,sizeof(str),"messer"); gweapon = 4;}
else if(strcmp(gname,"ketten",false)){format(str,sizeof(str),"Kettensäge"); gweapon = 9;}
else if(strcmp(gname,"granate",false)){format(str,sizeof(str),"Granate"); gweapon = 16;}
else if(strcmp(gname,"molotov",false)){format(str,sizeof(str),"Molotov Coktail"); gweapon = 18;}
else if(strcmp(gname,"pistole",false)){format(str,sizeof(str),"pistole"); gweapon = 22;}
else if(strcmp(gname,"deagle",false)){format(str,sizeof(str),"Desert Eagle"); gweapon = 24;}
else if(strcmp(gname,"schrot",false)){format(str,sizeof(str),"Schrotflinte"); gweapon = 25;}
else if(strcmp(gname,"doppelteschrot",false)){format(str,sizeof(str),"Doppelte Schrotflinte"); gweapon = 27;}
else if(strcmp(gname,"uzi",false)){format(str,sizeof(str),"UZI"); gweapon = 28;}
else if(strcmp(gname,"mp5",false)){format(str,sizeof(str),"MP5"); gweapon = 29;}
else if(strcmp(gname,"AK",false)){format(str,sizeof(str),"AK-47"); gweapon = 30;}
else if(strcmp(gname,"M4",false)){format(str,sizeof(str),"M4"); gweapon = 31;}
else if(strcmp(gname,"Sniper",false)){format(str,sizeof(str),"Scharfschützengewehr"); gweapon = 34;}
else if(strcmp(gname,"rpg",false)){format(str,sizeof(str),"RPG"); gweapon = 35;}
else if(strcmp(gname,"flammenwerfer",false)){format(str,sizeof(str),"MP5"); gweapon = 37;}
else if(strcmp(gname,"minigun",false)){format(str,sizeof(str),"Minigun"); gweapon = 38;}
SCM(playerid,mgrün,"[ADMIN]: Du hast dem Spieler %s die Waffe %s mit %d Munition gegeben!",GPlayerName(pID),str,munni);
SCM(pID,mgrün,"[ADMIN]: Du hast vom Admin %s die Waffe %s mit %d Munition bekommen!",GPlayerName(playerid),str,munni);
GivePlayerWeapon(pID,gweapon,munni);
return 1;
}
return 1;
} -
Hallo leute,
warum geht mein Ban befehl nicht ? BITTE KEINE DIREKTE ANTWORTEN BZW WAS GENAU DARAN FALSCH IST! Bitte erst so ein Tipp geben

ocmd:ban(playerid,params[])
{
if(SpielerInfo[playerid][Alevel] >= 1)
{
new pID,string[256],aname[MAX_PLAYER_NAME],SpielerName[MAX_PLAYER_NAME],grund[256];
GetPlayerName(pID,SpielerName,sizeof(SpielerName));
GetPlayerName(playerid,aname,sizeof(aname));
if(sscanf(params,"us",pID,grund))return SendClientMessage(playerid, Rot,"[FEHLER]{FFFFFF} Benutze: /Kick [ID/Name] [Grund]");
format(string,sizeof(string),"[INFO]{FFFFFF} %s %s hat {FF9D00}%s {FFFFFF}verbannt. Grund: {FF9D00}%s",GetPlayerAdminRankName(playerid),aname,SpielerName,grund);
SendClientMessageToAll(Rot,string);
Ban(pID);
SpielerInfo[playerid][Banned] = 1;
}
return 1;
} -
warum geht mein Ban befehl nicht ?
Was geht denn nicht? -
Alles anzeigen
Hallo leute,
warum geht mein Ban befehl nicht ? BITTE KEINE DIREKTE ANTWORTEN BZW WAS GENAU DARAN FALSCH IST! Bitte erst so ein Tipp geben

ocmd:ban(playerid,params[])
{
if(SpielerInfo[playerid][Alevel] >= 1)
{
new pID,string[256],aname[MAX_PLAYER_NAME],SpielerName[MAX_PLAYER_NAME],grund[256];
GetPlayerName(pID,SpielerName,sizeof(SpielerName));
GetPlayerName(playerid,aname,sizeof(aname));
if(sscanf(params,"us",pID,grund))return SendClientMessage(playerid, Rot,"[FEHLER]{FFFFFF} Benutze: /Kick [ID/Name] [Grund]");
format(string,sizeof(string),"[INFO]{FFFFFF} %s %s hat {FF9D00}%s {FFFFFF}verbannt. Grund: {FF9D00}%s",GetPlayerAdminRankName(playerid),aname,SpielerName,grund);
SendClientMessageToAll(Rot,string);
Ban(pID);
SpielerInfo[playerid][Banned] = 1;
}
return 1;
}Tipp 1: Sich selbst weg bannen, wenn man den Befehl eingibt?
Tipp 2: Jemanden Bannen und dann noch eine seiner Variablen verändern ?
-> Nicht sicher ob der Tipp sinn macht 
Sollten genug tipps sein
Es handelt sich um die letzten 2 zeilen 
-
So habe den Befehl nochmal etwas übearbeitet , leider wird der Spieler nur gekickt, aber wenn man wieder online kommt passiert nichts!
ocmd:ban(playerid,params[])
{
if(SpielerInfo[playerid][Alevel] >= 1)
{
new pID,string[256],aname[MAX_PLAYER_NAME],SpielerName[MAX_PLAYER_NAME],grund[256];
GetPlayerName(pID,SpielerName,sizeof(SpielerName));
GetPlayerName(playerid,aname,sizeof(aname));
if(sscanf(params,"us",pID,grund))return SendClientMessage(playerid, Rot,"[FEHLER]{FFFFFF} Benutze: /Kick [ID/Name] [Grund]");
if(!IsPlayerConnected(pID) || IsPlayerNPC(pID))return SendClientMessage(playerid, Rot, "[FEHLER]{FFFFFF} Der Spieler ist nicht eingeloggt!");
SpielerInfo[pID][Banned] = 1;
format(string,sizeof(string),"[INFO]{FFFFFF} %s {FF9D00}%s {FFFFFF}hat {FF9D00}%s {FFFFFF}verbannt. Grund: {FF9D00}%s",GetPlayerAdminRankName(playerid),aname,SpielerName,grund);
SendClientMessageToAll(Rot,string);
SavePlayer(playerid);
Kick(pID);
}
return 1;
}
//EDIT: MySQL error ist nun weg.. aber es wird trz nicht in die MYSQL datenbank eingetragen!
//EDIT 2 : Es wird garnichts gespeichert!Hier die Save Funktion:
SavePlayer(playerid)
{
if(SpielerInfo[playerid][eingeloggt] == 0)return 1;
{
new query[1024];
format(query,sizeof(query),"UPDATE user SET Level='%i',Fraktion='%i',Geldaufhand='%i',Kills='%i',Tode='%i',Alevel='%i',Skin='%i',Banned='%i',p_x='%f',p_y='%f',p_z='%f',Health='%f' WHERE id='%i'",SpielerInfo[playerid][Level],SpielerInfo[playerid][Fraktion],GetPlayerMoney(playerid),SpielerInfo[playerid][Kills],SpielerInfo[playerid][Tode],SpielerInfo[playerid][Alevel],SpielerInfo[playerid][Skin],
SpielerInfo[playerid][Banned],SpielerInfo[playerid][p_x],SpielerInfo[playerid][p_y],SpielerInfo[playerid][p_z],SpielerInfo[playerid][db_id]);
mysql_function_query(dbhandle,query,false,"","");
}
return 1;
} -