if(!strcmp(cmdtext, "/aconfig", true))
{
if(GetPVarInt(playerid,"SpielerAdmin") < MAX_ADMIN_LEVEL || !strcmp(GetName(playerid), "Maety_Chelios") || !strcmp(GetName(playerid), "Desonator")){
SetPVarInt(playerid,"PlayerStep",1);
return ShowPlayerDialogEx(playerid,ConfigDialog,DIALOG_STYLE_LIST,"Admin.config",ConfigMenuText,"Wählen","Zurück");
}else{
SendRightError(playerid,MAX_ADMIN_LEVEL);
}
}
Da vorheriger Post fehlerhaft.
AUs dem Kopf geschrieben, müsste so passen.
[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
-
-
Mit diesem Code, kann ein Adminlevel 7 (MAX_ADMIN_LEVEL) die aconfig nicht mehr benutzen, allerdings die aufgeführten Namen.
-
if(!strcmp(cmdtext, "/aconfig", true))
{
if(GetPVarInt(playerid,"SpielerAdmin") >= MAX_ADMIN_LEVEL || !strcmp(GetName(playerid), "Maety_Chelios") || !strcmp(GetName(playerid), "Desonator")){
SetPVarInt(playerid,"PlayerStep",1);
return ShowPlayerDialogEx(playerid,ConfigDialog,DIALOG_STYLE_LIST,"Admin.config",ConfigMenuText,"Wählen","Zurück");
}else{
SendRightError(playerid,MAX_ADMIN_LEVEL);
}
}So ist es richtig.
-
Alles klar, teste ich gleich. Iwie stehe ich aufm schlauch, warum diese Klammer notwendig ist:
Zitat"Maety_Chelios")
-
Das ist das Pendant zu der Klammer hier:
!strcmp( -
Damit wird die erste strcmp-Funktion geschlossen, und du kannst somit zur nächsten übergehen.
Wenn du dort keine Klammer hättest, wäre so gesehen beide strcmp-Funktion zu einer, aber das ist ja dann falsch. Ich hoffe das kann man einigermaßen verstehen. -
Jo, war wohl brainafk danke
-
Wieso klappt das nicht? (Gemeinst ist die letzte Zeile, in der das Level dann auf den Spieler eingetragen wird)
if(dialogid == DIALOG_ALEVEL)
{
if(!strlen(inputtext))
{
}
else
{
new string[164];
new name[MAX_PLAYER_NAME];
GetPlayerName(SelectedOne[playerid],name,sizeof(name));
new namegeber[MAX_PLAYER_NAME];
GetPlayerName(GeberName[playerid],namegeber,sizeof(namegeber));
format(string,sizeof(string),"Spieler %s ist nun Level %s", name, inputtext);
SendClientMessage(playerid,grün,string);
format(gebertext,sizeof(string),"Admin %s hat Dein Level auf %s gesetzt.", namegeber, inputtext);
SendClientMessage(SelectedOne[playerid],gelb,string);
PlayerInfo[SelectedOne[playerid]][pLevel] = inputtext;
}
} -
Wieso klappt das nicht? (Gemeinst ist die letzte Zeile, in der das Level dann auf den Spieler eingetragen wird)
Mach mal noch
SetPlayerScore(SelectedOne[playerid], inputtext);Hoffe es hilft dir.
LG,
SkoMe -
Nutze strval.
if(dialogid == DIALOG_ALEVEL)
{
if(!strlen(inputtext))
{
}
else
{
new string[164];
new name[MAX_PLAYER_NAME];
GetPlayerName(SelectedOne[playerid],name,sizeof(name));
new namegeber[MAX_PLAYER_NAME];
GetPlayerName(GeberName[playerid],namegeber,sizeof(namegeber));
format(string,sizeof(string),"Spieler %s ist nun Level %d", name, strval(inputtext));
SendClientMessage(playerid,grün,string);
format(gebertext,sizeof(string),"Admin %s hat Dein Level auf %d gesetzt.", namegeber, strval(inputtext));
SendClientMessage(SelectedOne[playerid],gelb,string);
PlayerInfo[SelectedOne[playerid]][pLevel] = strval(inputtext);
}
}@SkoMe: Das wird dir einen Argument type mismatch (Argument 2) geben, da inputtext ein Array ist.
-
-
Warum bekomme ich bei folgendem Code einen Warning:
if(!strcmp(cmdtext, "aconfig", true))
{
new alog[256];
if(GetPVarInt(playerid,"SpielerAdmin") >= MAX_ADMIN_LEVEL || !strcmp(GetName(playerid), "Maety_Chelios") || !strcmp(GetName(playerid), "Desonator")){
SetPVarInt(playerid,"PlayerStep",1);
return ShowPlayerDialogEx(playerid,ConfigDialog,DIALOG_STYLE_LIST,"Admin.config",ConfigMenuText,"Wählen","Zurück");
format(alog,sizeof(alog),"[AC] => %s ", GetName(playerid));
log("admin",alog);
}else{
SendRightError(playerid,MAX_ADMIN_LEVEL);
}
}
if(!strcmp(cmdtext, "refuelpetrol", true))CodeC:\Users\Administrator\Desktop\Ascension\gamemodes\gs-life.pwn(11057) : warning 225: unreachable code
Zitat von Line 11057format(alog,sizeof(alog),"[AC] => %s ", GetName(playerid));
Hier meine Log Funktion: //logsystem
log(type[], entry[])
{Hier meine Log Funktion: new timestamp = gettime(), query[500];
format(query,sizeof(query),"INSERT INTO `logs`(`type`, `timestamp`, `entry`) VALUES ('%s', %i, '%s')", type, timestamp, entry);
mysql_query(query);
} -
Weil du hier ein return hast.
return ShowPlayerDialogEx(
Zu
ShowPlayerDialogEx( -
Warum habe ich folgende Errors:
if(strcmp("/buygarage", cmd, true) == 0)
{
if(IsPlayerConnected(playerid))
{
new Float:oldposx, Float:oldposy, Float:oldposz;
GetPlayerName(playerid, playername, sizeof(playername));
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
for(new g = 0; g < sizeof(GarageInfo); g++) //Hier
{
if(PlayerToPoint(2.0, playerid, GarageInfo[g][gEntrancex], GarageInfo[g][gEntrancey], GarageInfo[g][gEntrancez]) && GarageInfo[g][gOwned] == 0) //Hier
{
if(PlayerInfo[playerid][pLevel] < GarageInfo[g][gLevel])
{
format(string, sizeof(string), " Du musst Level %d sein um dieses Garage kaufen zu können!", GarageInfo[g][gLevel]);
SendClientMessage(playerid, COLOR_ERRORTEXT, string);
return 1;
}
if(PlayerInfo[playerid][pCash] > GarageInfo[g][gPreis])
{
GarageInfo[g][gOwned] = 1;
GetPlayerName(playerid, sendername, sizeof(sendername));
strmid(HouseInfo[h][hOwner], sendername, 0, strlen(sendername), 255);
GivePlayerMoneys(playerid,-GarageInfo[g][gPreis]);
StuffInfo[sSteuerkasse] += GarageInfo[g][gPreis];
GarageInfo[g][gKasse] = 0;
GameTextForPlayer(playerid, "~w~Willkommen in deiner Garage~n~Du kannst deine Garage jederzeit mit /exit verlassen", 5000, 3);
Update3DTextGarage(g);
return 1;
}
else
{
SendClientMessage(playerid, COLOR_ERRORTEXT, " Du hast nicht genug Geld um dir das Haus kaufen zu können !");
return 1;
}
}
}
}
return 1;
}enum GarageInfo
{
Float:gEntrancex,
Float:gEntrancey,
Float:gEntrancez,
Float:gExitx,
Float:gExity,
Float:gExitz,
hOwner[MAX_PLAYER_NAME],
hBeschreibung[128],
gPreis,
gInt,
gLock,
gLevel,
};
new GaragenInfo[MaxGarage][GarageInfo] =
{
{651.2974,-1513.7551,14.8516,175,1302.519897,-1.787510,1001.028259,"Staat","Große Garage", 250000,18,1,5,
};
C:\Users\Daniel\Desktop\irp.pwn(21746) : error 039: constant symbol has no size
C:\Users\Daniel\Desktop\irp.pwn(21748) : error 028: invalid subscript (not an array or too many subscripts): "GarageInfo"
C:\Users\Daniel\Desktop\irp.pwn(21748) : warning 215: expression has no effect
C:\Users\Daniel\Desktop\irp.pwn(21748) : error 001: expected token: ";", but found "]"
C:\Users\Daniel\Desktop\irp.pwn(21748) : error 029: invalid expression, assumed zero
C:\Users\Daniel\Desktop\irp.pwn(21748) : fatal error 107: too many error messages on one line//edit Errors & Warning eingefügt.
-
-
Errormessages plus Markierung der Errorzeilen bitte.
Corvus:
Eingefügt Danke hab ich ganz vergessen -
GarageInfo[g][gOwned]
muss
GaragenInfo[g][gOwned]
sein.Ebenso bei allen anderen Aufrufen dort.
Auch hier:
for(new g = 0; g < sizeof(GarageInfo); g++) //Hier
zu:
for(new g = 0; g < sizeof(GaragenInfo); g++) //HierOhne n = dein Enum (kannst du nicht aufrufen!).
Mit n = Verwenden.Nächstes mal vielleicht weniger leicht verwechselbare Bezeichnungen nehmen.
-
Kann man das original Cluckin Bell menü also da wo einem das tablett hingehalten wird auch in einem gemappten cb verwenden? Also gibts da ne Funktion oder kann mir da jemand einen Tipp geben wie ich das selber bastle?
-
Ralf:
Also mit einer Funktion es hinsetzen geht nicht, da gibt es keine Methode.
Allerdings kannst du (was jedoch ziemlich aufwändig ist) einen NPC erstellen, den du mit einem der kontrollierbaren NPC-Plugins erstellst. Dann erstellst du einen Checkpoint an dem Tresen und wenn dort jemand reinläuft, wird die Animation des Tablett-gebens abgespielt, und dem NPC ein Tablett an die Hand attached. Dann kannst du mit den SA-MP Menüs ein Menü erstellen, welches die gleichen Teile beinhaltet, wie das Standard-Menü des Cluckin-Bell. Nach Auswahl kannst du den Spieler dann die Essen-Animation abspielen lassen und das Tablett wieder zurückfahren lassen.
Ob das alles so funktioniert wie beschrieben ist natürlich offen, das müsstest du testen und manche Teile ggf. anpassen.
-
Also gibts da ne Funktion oder kann mir da jemand einen Tipp geben wie ich das selber bastle?
Also mit einer Funktion es hinsetzen geht nicht, da gibt es keine Methode.
Doch die gibt es, sie heißt SetPlayerShopName.Damit kann man in einzelnen Gebäuden die Bots anzeigen lassen
mfg.
-
Das funktioniert aber nicht auf selbstgemappten Objekten. Das funktioniert nur, wenn man sich in (z.B.) einen Cluckin-Bell teleportiert, der standardmäßig einen Checkpoint am Tresen hat. Wenn man sich aber dort hineinteleportiert wird (z.T.) der Checkpoint nicht angezeigt. Nutzt man dann die Funktion, dann wird der Checkpoint angezeigt.In X-beliebigen selbst-gemappten Objekten geht das aber nicht.
-