SIehst du denn die offensichtliche Klammerfehler nicht? Möglichweise liegt es darans, dass du nicht einrückst. Der letze Abschnitt muss so aussehen:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
{
CarJacks[playerid]++;
if(CarJacks[playerid] == CAR_JACKS)
{
SetPlayerHealth(playerid, 0.0);
CarJacks[playerid] = 0;
} // Die hast vergessen
} // Und die
return 1;
}
Par Fragen
- Nate
- 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
-
-
Thx dir, es geht endlich, normalerwise dachte ich, dass die klammern blöd wären
aber nochma danke -
Hier versteh ich nur den Sinn der Carjack Definition nicht
if(newstate == PLAYER_STATE_DRIVER)
{
CarJacks[playerid]++;
if(CarJacks[playerid] == CAR_JACKS)
{
// Was soll mit dem Spieler passieren?
CarJacks[playerid] = 0;
}}
[b]if(CarJacks[playerid] == CAR_JACKS)[/b]
Was genau willst du damit erreichen ?
-
Das gleiche was du erreichen willst. Du kannst den Code auch in "OnPlayerEnterVehicle" einfügen (allerdings wird das auch ausgeführt, wenn man nur Enter in der Nähe eines Fahrzeugs drückt, auch wenn man das Carjack abbricht), dann ist der Code genauso wie bei dir. Du müsstest eher dich fragen, was du damit erreichen wolltest. Ich habe bereits oben geschrieben, dass ich deinen Code lediglich umgeschrieben habe.
EDIT: Habe dein Beitrag nich richtig gelsen. Die Variable wird hochgezählt und wenn man das Auto in meinem Fall 3 Mal "gejackt" hat, kriegt man Energieabzug und der Spass beginnt von vorn
-
muss ich dann nochwas ändern??
#include <a_samp>
#define CAR_JACKS 3
new CarJacks[MAX_PLAYERS];
#pragma tabsize 0
#if defined FILTERSCRIPTpublic OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Blank Filterscript by your name here");
print("--------------------------------------\n");
return 1;
}public OnFilterScriptExit()
{
return 1;
}#else
main()
{
print("\n----------------------------------");
print(" Blank Gamemode by your name here");
print("----------------------------------\n");
}#endif
public OnPlayerConnect(playerid)
{
CarJacks[playerid] = 0;
return 1;
}public OnPlayerDisconnect(playerid, reason)
{
return 1;
}public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
{
CarJacks[playerid]++;
if(CarJacks[playerid] == CAR_JACKS)
{
SetPlayerHealth(playerid, 0.0);
CarJacks[playerid] = 0;
}
}
return 1;
} -
Nein, wenn du es so wolltest, aber ich empfehle dir
#pragma tabsize 0
rauszunehmen und deinen Code einzurücken. -
Ah...hab mir den Code eben nochmal durchgelesen, allerdings ist es ja nun so, das wenn User A nun 3 Mal Enter tippt (ggf. er befindet sich in der Nähe eines Fahrzeuges), sofort gekillt wird.
Dann gibts da noch einen winzig kleinen Fehler, der User bekommt diese CarJacks auch beim Einsteigen ohne Autojacking -
und muss ich denn jetzt ändern???
#include <a_samp>
#define CAR_JACKS 3
new CarJacks[MAX_PLAYERS];
#if defined FILTERSCRIPTpublic OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Blank Filterscript by your name here");
print("--------------------------------------\n");
return 1;
}public OnFilterScriptExit()
{
return 1;
}#else
main()
{
print("\n----------------------------------");
print(" Blank Gamemode by your name here");
print("----------------------------------\n");
}#endif
public OnPlayerConnect(playerid)
{
CarJacks[playerid] = 0;
return 1;
}public OnPlayerDisconnect(playerid, reason)
{
return 1;
}public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
{
CarJacks[playerid]++;
if(CarJacks[playerid] == CAR_JACKS)
{
SetPlayerHealth(playerid, 0.0);
CarJacks[playerid] = 0;
}
}
return 1;
} -
Zitat
Ah...hab mir den Code eben nochmal durchgelesen, allerdings ist es ja nun so, das wenn User A nun 3 Mal Enter tippt (ggf. er befindet sich in der Nähe eines Fahrzeuges), sofort gekillt wird.
Eben nicht, deswegen hab ich ja PLAYER_STATE_DRIVER benutzt
ZitatDann gibts da noch einen winzig kleinen Fehler, der User bekommt diese CarJacks auch beim Einsteigen ohne Autojacking
Dann soll "gtatuerke" eben
CarJacks[playerid] = 0;
in einem public einbauen, der von einem bereits bestehenden Timer ausgeführt wird, um die Variable zurückzusetzen nach einer gewissen Zeit. Oder man schreibt ein anderes Script, das allerdings auch eine Schleife ausführt beim einsteigen, allerdings nur wenn wirklich jemand Enter drückt und einsteigt und nicht dauerhaft...
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(!ispassanger)
{
if(!IsVehicleEmpty(vehicleid))
{
CarJacks[playerid]++;
if(CarJacks[playerid] == CAR_JACKS)
{
SetPlayerHealth(playerid,0.0);
CarJacks[playerid] = 0;
}
}
}
return 1;
}stock IsVehicleEmpty(vehicleid)
{
for(new i = 0; i < GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
if(IsPlayerInVehicle(i,vehicleid))
{
if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
{
return false;
}
}
}
}
return true;
} -
Zitat
(60) : error 017: undefined symbol "ispassanger"
#include <a_samp>
#define CAR_JACKS 3
new CarJacks[MAX_PLAYERS];
#if defined FILTERSCRIPT
#pragma tabsize 0public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Blank Filterscript by your name here");
print("--------------------------------------\n");
return 1;
}public OnFilterScriptExit()
{
return 1;
}#else
main()
{
print("\n----------------------------------");
print(" Blank Gamemode by your name here");
print("----------------------------------\n");
}#endif
public OnPlayerConnect(playerid)
{
CarJacks[playerid] = 0;
return 1;
}public OnPlayerDisconnect(playerid, reason)
{
return 1;
}public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
{
CarJacks[playerid]++;
if(CarJacks[playerid] == CAR_JACKS)
{
SetPlayerHealth(playerid, 0.0);
CarJacks[playerid] = 0;
}
}
return 1;
}public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(!ispassanger)
{
if(!IsVehicleEmpty(vehicleid))
{
CarJacks[playerid]++;
if(CarJacks[playerid] == CAR_JACKS)
{
SetPlayerHealth(playerid,0.0);
CarJacks[playerid] = 0;
}
}
}
return 1;
}stock IsVehicleEmpty(vehicleid)
{
for(new i = 0; i < GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
if(IsPlayerInVehicle(i,vehicleid))
{
if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
{
return false;
}
}
}
}
return true;
} -
Meine beidenm Vorschläge musst du nicht einbauen, einer davon reicht. Ich habe meinen Schreibfehler verbessert und das Script angehängt. Das unten sollte funktionieren.
http://pastebin.com/m232bae88 -
hast du es villeicht nicht als pastebin??
weil mir kommen dir zahlen immer mit, keine lust die zu entfernen und das script wird dann iwie komisch:
#include <a_samp>
#define CAR_JACKS 3
new CarJacks[MAX_PLAYERS];
#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Blank Filterscript by your name here");
print("--------------------------------------\n");
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
#else
main()
{
print("\n----------------------------------");
print(" Blank Gamemode by your name here");
print("----------------------------------\n");
}
#endif
public OnPlayerConnect(playerid)
{
CarJacks[playerid] = 0;
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
return 1;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(!ispassenger)
{
if(!IsVehicleEmpty(vehicleid))
{
CarJacks[playerid]++;
if(CarJacks[playerid] == CAR_JACKS)
{
SetPlayerHealth(playerid,0.0);
CarJacks[playerid] = 0;
}
}
}
return 1;
}
stock IsVehicleEmpty(vehicleid)
{
for(new i = 0; i < GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
if(IsPlayerInVehicle(i,vehicleid))
{
if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
{
return false;
}
}
}
}
return true;
}
-
Nimm den Code unten in der weisen Box
-
lol habe den garnicht bemerkt
naja danke an alle, falls was ist, dann melde ich mich. -
breadfish.de
Hat das Thema geschlossen.