hi, ich suche ein funzendes car jack system. wenn jemand versucht das auto zu klauen wo schon jemand drinn sitzt das der dann vereckt. hatte auch mal eins aber das war sowas von buggy... das hatte nichtmsher ebracht. mfg
Anti Car Jack
- Jack_xD
- Geschlossen
- Erledigt
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
-
-
Hast du schon im Englischen Forum geschaut? Ich glaub ich hab da mal eins gesehen kann mich aber nicht an den Namen errinern.
-
new
bool:vDriver[MAX_VEHICLES];
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
{
vDriver[GetPlayerVehicleID(playerid)] = true;
}
else if(newstate == PLAYER_STATE_ONFOOT && oldstate == PLAYER_STATE_DRIVER)
{
vDriver[GetPlayerVehicleID(playerid)] = false;
}
return 1;
}public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(!ispassenger)
{
if(vDriver[vehicleid])
{
TogglePlayerControllable(playerid, 1); // Vorgang abbrechen
}
}
return 1;
}
ungetestet -
1error
C:\Dokumente und Einstellungen\Alex\Eigene Dateien\samp02Xserver.win32\gamemodes\Atlanta_island.pwn(1674) : error 021: symbol already defined: "OnPlayerEnterVehicle"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase1 Error.
-
Nicht einfach kopieren und einfügen, du solltest schon meinen Code in deinen einfügen.
Beispiel:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
// hier dein bisheriger Code in OnPlayerenterVehicle (ohne return 1 !)
if(!ispassenger)
{
if(vDriver[vehicleid])
{
TogglePlayerControllable(playerid, 1); // Vorgang abbrechen
}
}
return 1;
} -
ich habe aber keinen code mehr. ich brauch einfach nur den anti car jack code wo wenn man versucht ein auto zu klauen wo jemand drinn ist das dieser stirbt. und das aber auch der passagier einsteigen kann (nicht wie bei meinen alten das mal er gestorben is und dann ich wenn er einstieg)
-
Oben steht der Code, den d dazu benutzen kannst. Wenn du wllst, dass der Spieler dabei sribt, dann benutze
SetPlayerHealth(playerid, 0);
anstatt
TogglePlayerControllable(playerid, 1); // Vorgang abbrechen
-
ok, is aber wiegesagt immer noch der error:
C:\Dokumente und Einstellungen\Alex\Eigene Dateien\samp02Xserver.win32\gamemodes\Atlanta_island.pwn(1674) : error 021: symbol already defined: "OnPlayerEnterVehicle"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase1 Error.
-
Du kannst nicht 2 mal das gleiche Public in deinem GM oder FS haben! Du musst sie in 1 zusammenkopieren...
-
aaaah fuck ja danke habe nicht bemerkt das ich das nor irgendow zwischendrinn hatte xD
-
-
Schau den 5.Post an, da habe ich es schon geschrieben:
// hier dein bisheriger Code in OnPlayerenterVehicle (ohne return 1 !) -
hab doch schon geschrieben das ich das übersehen hatte
edit das script is buggy. also ich steige ins auto. alles ok. dann steig ich auch und will wieder einsteigen und ich sterbe. -
Dann setz doch vDriver beim aussteigen auf False, himmeldonnerwetternochmal !
/edit: BTW. nichtmals nötig, einfach das sinnlose && oldstate == PLAYER_STATE_DRIVER weg
Eigeninitiative !
Googel oder wiki !
Ist das so schwer ?
Und ein wenig logisches denken wäre auch mal angebracht.
Immer muss man alles vorkauen, weil Anfänger keine Lust haben selbst ihren Kopf zu benutzen .... -
Versuchs mal so, ungetestet.
new bool:vDriver[MAX_VEHICLES];
new eingestiegen = 0;
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
{
vDriver[GetPlayerVehicleID(playerid)] = true;
eingestiegen = 1;
}
else if(newstate == PLAYER_STATE_ONFOOT && oldstate == PLAYER_STATE_DRIVER)
{
vDriver[GetPlayerVehicleID(playerid)] = false;
eingestiegen = 0;
}
return 1;
}public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(!ispassenger)
{
if(vDriver[vehicleid] && eingestiegen == 1 )
{
TogglePlayerControllable(playerid, 1); // Vorgang abbrechen
}
}
return 1;
} -
Zitat
Dann setz doch vDriver beim aussteigen auf False, himmeldonnerwetternochmal !
/edit: BTW. nichtmals nötig, einfach das sinnlose
Erst denken, dann schreiben, keinesfalls sinnlos, da PLAYER_STATE_ONFOOT auch aufgerufen wird, wenn ein Passagier aussteigt und das braucht man bei vDriver nicht. Der Fehler war ein Denkfehler von mir. Hier die überarbeitete Version:new
bool:vDriver[MAX_VEHICLES],
pOldCar[MAX_PLAYERS];public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
{
new
carid = GetPlayerVehicleID(playerid);
vDriver[carid] = true;
pOldCar[playerid] = carid;
}
else if(oldstate == PLAYER_STATE_DRIVER)
{
vDriver[pOldCar[playerid]] = false;
}
return 1;
}public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(!ispassenger)
{
if(vDriver[vehicleid])
{
SetPlayerHealth(playerid, 0); // Vorgang abbrechen
}
}
return 1;
}Fehler lag darin, dass bei ONFOOT kein Auto ausgebeben wird, sondern nur 0, logisch
-
hab das von surrender genommen. das funst eigentlich. aber deins heb ich auch auf thx
-
Surrender seines funktioniert nicht, da es eine eine variable für alle Spieler gleichzeit
Oh da fällt mir ein, es gibt einen Samp Bug der es verhindert:
Du kannst zwar den Spieler, der gerade vesucht einzusteuigen, davon abhalten, der andere Spieler steigt aber trotzdem aus, egal ob es abgebrochen wird oder nicht... -
alsoo sollte ich leiber deins nehmen ? xD
-
Meines funktioniert auch für mehr als einen carjack zur selben Zeit, von diesem Punkt aus gesehen also ja, ABER es handelt sich hierbei um einen Samp Bug. Wenn du "Enter" drückst zum Einsteigen und in dem Auto befindet sich jeder, fliegt dieser auf JEDEN Fall aus dem Auto, auch wenn du die Animation des herausiehens unterbrichst. Du könntest es alsonicht dazu verwenden, das Carjacken zu unterbrechen, du könntest den Spieler aber bei mehrmaligem Verstoss verwarnen oder kicken
-
Zitat
PLAYER_STATE_ONFOOT auch aufgerufen wird, wenn ein Passagier aussteigt
Ne, echt?
Es ging nur darum, dass PLAYER_STATE_ONFOOT & PLAYER_STATE_DRIVER soweit ich weiß nicht gleichzeitig aufgerufen wird ! -