Hast du zufällig ein Beispiel für mich? ![]()
[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
-
-
new name[MAX_PLAYER_NAME];
for(new i;i<MAX_PLAYERS;i++)
{
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
if(strfind(inputtext,name,true) != -1)
{
"name" ist nun der Name
return 1;
}
} -
Werde 2 mal im /members angezeigt, sprich mein Name überschreibt den Namen des anderen.
Woran liegt es?
CMD:members(playerid,params[])
{
if(!IsLoggedIn(playerid))return 1;
if(Spieler[playerid][pFraktion] == 0)return SendClientMessage(playerid,COLOR_GREY,"** Du bist in keiner Fraktion.");
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(Spieler[i][pFraktion] == Spieler[playerid][pFraktion])
{
format(DialogString,sizeof(DialogString),"%s (Rang: %s - %d)\n",GetName(i),GetRankName(Spieler[i][pFraktion],Spieler[i][pRank]),Spieler[i][pRank]);
strcat(DialogString,DialogString);
}
}
}
ShowPlayerDialog(playerid,DIALOG_MEMBERS,DIALOG_STYLE_LIST,""COLOR_HEX_BLUE""#SERVER_NAME": "COLOR_HEX_WHITE"Member Verwaltung",DialogString,"Auswählen","Abbrechen");
return 1;
} -
hab das nun gelöst folgendes Problem:
error 021: symbol already defined: "AC_GivePlayerHealthEx"
#define GivePlayerHealth AC_GivePlayerHealthEx
forward AC_GivePlayerHealthEx(playerid,Float:health);
public AC_GivePlayerHealthEx(playerid,Float:health){
ACNewHealth[playerid] = health;
stopAC[playerid] = 15;
return SetPlayerHealth(playerid,ACNewHealth[playerid]);
} -
Erledigt, kann gelöscht werden !
-
Cheevy.Shakur:
CMD:members(playerid,params[])
{
if(!IsLoggedIn(playerid))return 1;
if(Spieler[playerid][pFraktion] == 0)return SendClientMessage(playerid,COLOR_GREY,"** Du bist in keiner Fraktion.");
for(new i;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
if(Spieler[i][pFraktion] == Spieler[playerid][pFraktion]))
{
format(DialogString,sizeof DialogString,"%s\n%s (Rang: %s - %d)",DialogString,GetName(i),GetRankName(Spieler[i][pFraktion],Spieler[i][pRank]),Spieler[i][pRank]);
}
}
}
return ShowPlayerDialog(playerid,DIALOG_MEMBERS,DIALOG_STYLE_LIST,""COLOR_HEX_BLUE""#SERVER_NAME": "COLOR_HEX_WHITE"Member Verwaltung",DialogString,"Auswählen","Abbrechen");
}
So sollte das klappen. -
Hab das jetzt so, aber irgendwas buggt hier...
CMD:lock(playerid)
{
if(!IsLoggedIn(playerid))return 1;
new veh = GetPlayerVehicleID(playerid), Float:pos[3];
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, COLOR_GREY, "** Du sitzt in keinem Fahrzeug.");
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)return SendClientMessage(playerid, COLOR_GREY, "** Du bist nicht der Fahrer.");
if(Spieler[playerid][pAdminDuty] == 1)
{
if(IsValidVehicle(veh))
{
GetVehiclePos(veh, pos[0], pos[1], pos[2]);
GetVehicleParamsEx(veh, engine, lights, alarm, doors, bonnet, boot, objective);
if(doors == VEHICLE_PARAMS_UNSET || doors == VEHICLE_PARAMS_OFF)
{
LockVehicle(veh);
GameTextForPlayer(playerid, "~w~Fahrzeug~n~~r~Abgeschlossen", 3000, 6);
PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
return 1;
}
else if(doors == VEHICLE_PARAMS_ON)
{
UnlockVehicle(veh);
GameTextForPlayer(playerid, "~w~Fahrzeug~n~~g~Aufgeschlossen", 3000, 6);
PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
return 1;
}
}
}
if(!(IsAFraktionsVeh(veh) == INVALID_VEHICLE_ID))
{
if(IsValidVehicle(veh))
{
new fV = IsAFraktionsVeh(veh);
if(Spieler[playerid][pFraktion] == fVehicle[fV][vehFraktion])
{
GetVehiclePos(veh, pos[0], pos[1], pos[2]);
GetVehicleParamsEx(fVehicle[fV][vehID], engine, lights, alarm, doors, bonnet, boot, objective);
if(doors == VEHICLE_PARAMS_UNSET || doors == VEHICLE_PARAMS_OFF)
{
LockVehicle(fVehicle[fV][vehID]);
GameTextForPlayer(playerid, "~w~Fraktions-Fahrzeug~n~~r~Abgeschlossen", 3000, 6);
PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
return 1;
}
else if(doors == VEHICLE_PARAMS_ON)
{
UnlockVehicle(fVehicle[fV][vehID]);
GameTextForPlayer(playerid, "~w~Fraktions-Fahrzeug~n~~g~Aufgeschlossen", 3000, 6);
PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
return 1;
}
}
else
{
return SendClientMessage(playerid, COLOR_GREY, "** Du besitzt keine Schlüssel für dieses Fahrzeug.");
}
}
}
for(new i=0;i<GetMaxPlayers();i++)
{
for(new slot=0;slot<MAX_PLAYER_VEHICLES;slot++)
{
if(veh == PrivateVehicle[i][slot][vehID])
{
GetVehiclePos(veh, pos[0], pos[1], pos[2]);
GetVehicleParamsEx(PrivateVehicle[i][slot][vehID], engine, lights, alarm, doors, bonnet, boot, objective);
if(doors == VEHICLE_PARAMS_OFF || doors == VEHICLE_PARAMS_UNSET)
{
LockVehicle(PrivateVehicle[i][slot][vehID]);
GameTextForPlayer(i, "~w~Privat-Fahrzeug~n~~r~Abgeschlossen", 3000, 6);
PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
return 1;
}
if(doors == VEHICLE_PARAMS_ON)
{
UnlockVehicle(PrivateVehicle[i][slot][vehID]);
GameTextForPlayer(i, "~w~Privat-Fahrzeug~n~~g~Aufgeschlossen", 3000, 6);
PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
return 1;
}
}
}
}
if(veh == Spieler[playerid][pBusID])
{
GetVehiclePos(veh, pos[0], pos[1], pos[2]);
GetVehicleParamsEx(Spieler[playerid][pBusID], engine, lights, alarm, doors, bonnet, boot, objective);
if(doors == VEHICLE_PARAMS_OFF || doors == VEHICLE_PARAMS_UNSET)
{
LockVehicle(Spieler[playerid][pBusID]);
GameTextForPlayer(playerid, "~w~Job-Fahrzeug~n~~r~Abgeschlossen", 3000, 6);
PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
return 1;
}
if(doors == VEHICLE_PARAMS_ON)
{
UnlockVehicle(Spieler[playerid][pBusID]);
GameTextForPlayer(playerid, "~w~Job-Fahrzeug~n~~g~Aufgeschlossen", 3000, 6);
PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
return 1;
}
}
if(veh == Spieler[playerid][pBike])
{
if(IsValidVehicle(Spieler[playerid][pBike]))
{
GetVehiclePos(Spieler[playerid][pBike], pos[0], pos[1], pos[2]);
GetVehicleParamsEx(Spieler[playerid][pBike], engine, lights, alarm, doors, bonnet, boot, objective);
if(doors == VEHICLE_PARAMS_OFF || doors == VEHICLE_PARAMS_UNSET)
{
LockVehicle(Spieler[playerid][pBike]);
GameTextForPlayer(playerid, "~w~Fahrrad~n~~r~Abgeschlossen", 3000, 6);
return 1;
}
if(doors == VEHICLE_PARAMS_ON)
{
UnlockVehicle(Spieler[playerid][pBike]);
GameTextForPlayer(playerid, "~w~Fahrrad~n~~g~Aufgeschlossen", 3000, 6);
return 1;
}
}
}
return SendClientMessage(playerid, COLOR_GREY, "** Du besitzt keine Schlüssel für dieses Fahrzeug.");
} -
Hab das jetzt so, aber irgendwas buggt hier...
Könntest du erklären was da buggt? Ich kann es ja schlecht erraten.
-
Spieler sitzt in Auto was ihm gehört -> Dieses Fahrzeug gehört dir nicht...
-
Hi, habe gerade ein Problem beim Speichern der Fahrzeugfarben..
Vorher hatte ich es gespeichert ohne Farben, also nur ID und Koordinaten, jetzt möchte ich die Farben auch speichern.
ocmd:veh(playerid,params[])
{
new mID,pID,color1,color2;
if(!IsPlayerAnAdmin(playerid,3))return SendClientMessage(playerid, ROT, "Du bist kein Admin oder dein Rang ist zu niedrig!");
if(sscanf(params,"uiii",pID,mID,color1,color2))return SendClientMessage(playerid,ROT,"Befehl: /veh [PLAYERID] [CARID] [FARBE1] [FARBE2]");
if(mID<400||mID>611)return SendClientMessage(playerid,ROT,"Fahrzeug ID muss zwischen 411 und 611 liegen!");
if(color1<0||color1>126||color2<0||color2>126) return SendClientMessage(playerid,ROT,"Die Farbe muss zwischen 0 und 126 liegen!");
new Float:xc,Float:yc,Float:zc,Float:rc;
GetPlayerPos(pID,xc,yc,zc);
GetPlayerFacingAngle(pID,rc);
createCar(pID,mID,xc,yc,zc,rc,color1,color2);
return 1;
}createCar(playerid,modelid,Float:x,Float:y,Float:z,Float:r,f1,f2)
{
for(new i=0; i<sizeof(cInfo); i++)
{
if(cInfo[i][id_x]!=0)continue;
GetPlayerName(playerid,cInfo[i][besitzer],24);
cInfo[i][c_x]=x;
cInfo[i][c_y]=y;
cInfo[i][c_z]=z;
cInfo[i][c_r]=r;
cInfo[i][farbe1]=f1;
cInfo[i][farbe2]=f2;
cInfo[i][model]=modelid;
cInfo[i][id_x] = CreateVehicle(modelid,x,y,z,r,f1,f2,-1);
saveCarToDB(playerid,i);
return 1;
}
return 1;
}saveCarToDB(playerid,carid)
{
new query[128];
format(query,sizeof(query),"INSERT INTO cars (besitzer,model,farbe1,farbe2,x,y,z,r) VALUES ('%i','%i','%i','%i','%f','%f','%f','%f')",sInfo[playerid][id],cInfo[carid][model],cInfo[carid][farbe1],cInfo[carid][farbe2],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]);
mysql_function_query(dbverbindung,query,false,"","");
return 1;
}Problem ist jetzt er speichert gar nichts mehr..
Ist hier vll ein Fehler, dass ich hier nicht color1,color2 schreiben darf:
createCar(pID,mID,xc,yc,zc,rc,color1,color2); -
-
@Kontrax:
new query[128];
zu:
new query[256];Cheevy.Shakur:
Mache bitte einen Thread auf, dieser Thread ist nicht dazu da Codes zu debuggen, daher mach bitte einen Thread auf, dann debuggen wir es da. -
Danke! noch eine kleine Frage dazu warum kann ich hier jetzt
createCar(pID,mID,xc,yc,zc,rc,color1,color2);
color1 und color2 direkt eintragen?Hier funktioniert das ja so nicht:
ocmd:test(playerid,params[])
{
GetPlayerName(playerid, sendename, 24);
SendClientMessage(playerid,ORANGE,"sendename");
return 1;
}da man ja den text formatieren muss:
ocmd:test(playerid,params[])
{
new text1[60];
GetPlayerName(playerid, sendename, 24);
format(text1, sizeof(text1), "%s",sendename);
SendClientMessage(playerid,ORANGE,text1);
return 1;
} -
Weil das erste Parameter einer Funktion sind, und das zweite Platzhalter in einem String sind.
Das sind zwei unterschiedliche Dinge, daher muss man sie auch unterschiedlich behandeln. -
Beitrag von Apokrate ()
Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar. -
Hi, ich hätte eine kleine Frage:
wenn man bei einem Befehl zum Beispiel 2 Integer braucht,
wie beim /veh befehl farbe 1 und farbe 2 kann man ja new farbe[2];
und dann kann man farbe[0] und farbe[1] verwenden
funktioniert das auch mit strings?
also wenn ich text1[60] habe und text2[60]
gibts dann irgendwie sowas oder so: text[2][60] -
Bei mir gibt cache_get_row nur die ersten Buchstaben / Zahlen aus der Datenbank aus, weiß jemand eventuell warum ?
-
funktioniert das auch mit strings?
Ja, dafür musst du zweidimensionale Arrays verwenden, ansonsten funktioniert das nicht.Beispiel:
new bla[5][60];
Damit kannst du 5 Strings mit je maximal 60 Zeichen speichern.
new bla[5][60];
format(bla[0], sizeof(bla[]), "Blub");
print(bla[0]); //Ausgabe: "Blub"//E: Kleinigkeit am Code verändert
-
Beitrag von IceWave ()
Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar. -
Meine amx war vorher 2.3MB groß
Sie ist jetzt 130MB groß
Das einzige großaritge was ich geändert habe, waren die Player und Vehicle schleifen.
Ich habe eine variabel erstellt die die maximale ID wiedergibt für einen Spieler und ein Fahrzeug, so dass die Schleifen nicht unnötig mehr durchlaufen.
-
Wenn du das rückgängig machst, dann ist es wieder 2.3MB?
Wenn ja, dann poste bitte mal das was du eingefügt hast. 130MB ist etwas zu viel.
