Ehm nein, du kannst damit auch mehrere zeichen splitten.
ich kann zb.
125,6843,58692,83038,639046
Jede Zahl vor dem komma einer variable zuweisen mit meinem split.
Ehm nein, du kannst damit auch mehrere zeichen splitten.
ich kann zb.
125,6843,58692,83038,639046
Jede Zahl vor dem komma einer variable zuweisen mit meinem split.
Google mal nach Split String oder String Splitten.
Funktion:
stock split(const strsrc[], strdest[][], delimiter)
{
new i, li;
new aNum;
new len;
while(i <= strlen(strsrc)){
if(strsrc[i]==delimiter || i==strlen(strsrc)){
len = strmid(strdest[aNum], strsrc, li, i, 128);
strdest[aNum][len] = 0;
li = i+1;
aNum++;
}
i++;
}
return 1;
}
Es müsste doch eigentlich sichtbar für dich sein? unreachable code heißt das der dort nie etwas ausführen wird weil er da nicht hinkommt... anyways hier haste die lösung.
public OnPlayerPickUpPickup(playerid, pickupid)
{
if(pickupid==bsnenter)
{
SetPlayerPos(playerid,375.962463,-65.816848,1001.507812);
SetPlayerInterior(playerid,10);
GameTextForPlayer(playerid,"~w~Du ~r~hast ~b~den ~n~~g~BSN betreten.",3000,3);
}
if(pickupid==bsnexit)
{
SetPlayerPos(playerid,1199.4618,-920.8215,43.1059);
SetPlayerFacingAngle(playerid,185.7090);
SetCameraBehindPlayer(playerid);
SetPlayerInterior(playerid,0);
}
return 1; // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Löschen !
if(pickupid==Ammuenter) // Hier ist Zeile 252
{
SetPlayerPos(playerid,86.800994,-82.547599,1001.515625);
SetPlayerInterior(playerid,4);
}
return 1; // Zeile 257
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
if(pickupid==bsnenter)
{
SetPlayerPos(playerid,375.962463,-65.816848,1001.507812);
SetPlayerInterior(playerid,10);
GameTextForPlayer(playerid,"~w~Du ~r~hast ~b~den ~n~~g~BSN betreten.",3000,3);
}
if(pickupid==bsnexit)
{
SetPlayerPos(playerid,1199.4618,-920.8215,43.1059);
SetPlayerFacingAngle(playerid,185.7090);
SetCameraBehindPlayer(playerid);
SetPlayerInterior(playerid,0);
}
return 1;
} // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
if(pickupid==Ammuenter) // Hier ist Zeile 252
{
SetPlayerPos(playerid,86.800994,-82.547599,1001.515625);
SetPlayerInterior(playerid,4);
}
return 1; // Zeile 257
}
Aber ganz schnell weg damit, das verursacht dir den fehler
Der Englisch Text ist nicht grade der beste, es sollte eher so sein:
"You can't shoot while you drive a car."
"Shooting is forbidden while you drive a car."
"You are unable to shoot while you drive a car."
Achte auf Groß und Klein schreibung.
Mein gott wegen den 3 if abfragen hau ich bestimmt nicht den ganzen CPU weg da müssten schon 100.000+ if abfragen im Sekunden Takt sein damit der CPU lahm-gelegt ist...
Case ist um ein minimum besser aber mit einer If abfrage kannst du mehr anstellen.
Sagen wir es mal so: Dem jedem das eigene.
Ich finde If Abfragen sehen einfach besser aus fürs Auge wie eine Switch.
Hagi´s Lösung ist die bessere.
Switch und Case ist CPU schonender bei mehr als 3 Abfragen sollte man switch und Case verwenden.
MFG RFT
Das ist doch nicht dein ernst? Ein Moderner CPU schafft ca 1.800.000.000 (1,8mrd) abfragen innerhalb weniger millisekunden, da macht das zwichen if oder case kein unterschied, zumal gibt es keinen.
bei if werden beide variablen verglichen, das gleiche wird bei switch auch gemacht, da der pc sonst nicht rausfindet welche abfrage er jetzta annehmen soll.
Wikipedia hilft.
Im OnGameModeInit natürlich noch einen timer mit SetTimer oder SetTimerEx erstellen.
new iMessage = 0;
public AutoMessage()
{
if(iMessage == 1)
{
SendClientMessageToAll(COLOR_WHITE, "Auto-Nachricht die erste");
}
else if(iMessage == 2)
{
SendClientMessageToAll(COLOR_WHITE, "Auto-Nachricht die zweite");
}
else if(iMessage == 3)
{
SendClientMessageToAll(COLOR_WHITE, "Auto-Nachricht die letzte.");
iMessage = 0;
return 1;
}
iMessage++;
}
Such dir die stelle raus, wo das Anti-Weaponhack System ist und füg eine If abfrage hinzu ob dieser Spieler ein Admin ist, das ganze müsste in einer for schleife sein.
new (carid == PTruck[0] || carid == PTruck[1] || carid == PTruck[2] || carid == PTruck[3])
if(!IsATruck(tmpcar))
Was ist mit SQL-Injection?
Kleiner Tipp: Das eingegebene Passwort solltest du zu einem MD5 encrypten, danach solltest du das Passwort als MD5 speichert, glaubs mir, das erleichtert dir so einiges.
Kenne mich mit DINI leider nicht aus, kann dir da nicht Helfen, benutze mein eigenes INI System und SQL, da muss dir jemand anderes Helfen
Ja Genau, jetzt musste es nurnoch Speicher und Laden, dann hast du was du brauchst.
PS: Benutz lieber die Increment Funktion "++", ist besser wie "+=1"
Was gibt es daran nicht zu verstehen?
Ein Timer, der die Spielzeit in einer Variable erhöht, diese Speicherst du dann mittels dini ab, so einfach.
Es wurde doch schon alles gesagt?
Also wenn du damit nicht klar kommst empfehle ich dir erstmal die Grundkenntnisse der Programmierung in AMX (bzw. Pawn).
Jeder User, der auch nur den hauch einer ahnung hat, wüsste was hier zu tun ist, es bringt dir nicht wenn du alles im Forum zusammen fragst und am Ende hast du ein Gamemode wo du nicht mal weißt was welche Funktion hat, also nehm dir die Zeit und lern mal 1 Woche lang die Basics.
Fällt dir hier etwas auf?
if(IsPlayerInRangeOfPoint(i, STREAM_RANGE, ObjPos[o][0], ObjPos[o][1], ObjPos[o][2]))
{
if(StreamObject[o][i] == 0)
{
ObjectID[o][i] = CreatePlayerObject(i,ObjectModel[o], ObjPos[o][0], ObjPos[o][1], ObjPos[o][2], ObjRotate[o][0], ObjRotate[o][1], ObjRotate[o][2]);
StreamObject[o][i] = 1;
continue;
}
}else if(!IsPlayerInRangeOfPoint(i, STREAM_RANGE, ObjPos[o][0], ObjPos[o][1], ObjPos[o][2]))
{
if(StreamObject[o][i] == 1)
{
DestroyPlayerObject(i,ObjectID[o][i]);
StreamObject[o][i] = 0;
continue;
}
}
Die Abfrage nach dem else Statement ist Sinnlos, warum sollte ich 2 mal Prüfung ob der Spieler in reichweite ist oder nicht?
IsPlayerInRangeOfPoint gibt dir den Wert 1 zurück wenn er in reichweite ist und 0 wenn nicht, also ein ganz normales "else" ohne eine "if" abfrage danach hätte es auch getahn.
if(IsPlayerInRangeOfPoint(i, STREAM_RANGE, ObjPos[o][0], ObjPos[o][1], ObjPos[o][2]))
{
if(StreamObject[o][i] == 0)
{
ObjectID[o][i] = CreatePlayerObject(i,ObjectModel[o], ObjPos[o][0], ObjPos[o][1], ObjPos[o][2], ObjRotate[o][0], ObjRotate[o][1], ObjRotate[o][2]);
StreamObject[o][i] = 1;
continue;
}
}else{
if(StreamObject[o][i] == 1)
{
DestroyPlayerObject(i,ObjectID[o][i]);
StreamObject[o][i] = 0;
continue;
}
}
Somit sparst du eine Sinnlose abfrage und sparst im Endeffekt ein paar Milisekunden, Rechne dir den Profit mal bei 500 Spielern aus.