Es liegt sicher nicht daran.. Such mal in deinem GM oder Includes nach sowas wie
#define CreateVehicle
(Nicht die native Zeile.)
und schicke uns diese Zeile..
Beiträge von Templer
-
-
Am besten so:
new PlayerNameCache[MAX_PLAYER_NAME];
stock Player(playerid)
{
GetPlayerName(playerid, PlayerNameCache, sizeof(PlayerNameCache));
return PlayerNameCache;
} -
Nicht wirklich, sondern halt nur ne Information, dass diese Funktionen in deinem Script nicht funktionieren.
-
new info[32], h=-1;
while(h < sizeof(Carinfo))
{
h++;
format(info, sizeof(info), "/Autohausauto/rentcar%d.car",h);
if(!dini_Exists(info)) continue;
Carinfo[h][aID] = dini_Int(info, "aID");
Carinfo[h][aX] = dini_Float(info, "aX");
Carinfo[h][aY] = dini_Float(info, "aY");
Carinfo[h][aZ] = dini_Float(info, "aZ");
Carinfo[h][aR] = dini_Float(info, "aR");
Carinfo[h][ac1] = dini_Int(info, "ac1");
Carinfo[h][ac2] = dini_Int(info, "ac2");
CreateVehicle(Carinfo[h][aID], Carinfo[h][aX], Carinfo[h][aY], Carinfo[h][aZ], Carinfo[h][aR], Carinfo[h][ac1], Carinfo[h][ac2], 60000);
} -
Nütze meine Version, da ich von den dcmd ned viel halte und sscanf in diesem Falle sinnlos ist.
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strfind(cmdtext, " ", false) != -1 && !strcmp(cmdtext, "/v", false, strfind(cmdtext, " ", false)))
{
strdel(cmdtext, 0, strfind(cmdtext, " ", false)+1);
new veh = strval(cmdtext), Float:PlayerPos[4], farbe = random(40);
if(!strlen(cmdtext)) return SendClientMessage(playerid,nefarbe," /v <Fahrzeug-ID>");
if(400 < veh < 622) return SendClientMessage(playerid, nefarbe, " Die ModelID vom Fahrzeug nicht niedriger als 400 oder höher als 622!");
GetPlayerPos(playerid,PlayerPos[0],PlayerPos[1],PlayerPos[2]); GetPlayerFacingAngle(playerid, PlayerPos[3]);
CreateVehicle(veh,Pos[0],Pos[1]+3,Pos[2], PlayerPos[3], farbe, farbe, -1);
return true;
}
} -
Wow [NeS]Fischer coole Vorurteile, als ob du zu einem farbigen sagen würdest, ob er für dich Obama anrufen könnte..
Zum Topic:
Benenne in der morphinc.inc in der Zeile 3 die ParameterFunktionen um von x2 y2 z2 in sagen wir x3 y3 z3 und in deinem Script das gleiche bzw. eine höhere Zahl nehmen, oder du vielleicht die Floats nach der Funktion benennen würdest ^^.
In der public OnPlayerConnect ganz am Ende normalerweise ein return true; jedoch sollte das letzte eine ELSE IF Abfrage sein, wo eine Abfrage abgebrochen wird mit einem return und die andere nicht, so erklärt sich meine Feststellung von alleine und fügst der anderern Abfrage auch ein return true ein(bzw. sonst irgendeinen Wert...)
Füge dann folgende Funktion in dein Script, wenn möglich, oben ein!
stock strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
Danach poste uns die neuen ErrorZeilen, während ich mir die zwei unbekannten error Meldungen ansehe... -
Lösch den public OnPlayerPrivmsg und such nach
new Turfs -
woho, wieso alles umschreiben? Einfach die Parameter beim stock/public ändern...
-
Es kann auch sein, dass die Parameter minX, minY, maxX und maxY bei PlayerInZone anders sind, als beim GangZoneCreate
Schonmal daran gedacht? Ansonsten poste uns die Funktion PlayerInZone
-
@ [MW]Cody09 Es sollte eigentlich nicht Blinken
Kann es sein das du mehrere No-DM Zonen auf einer Fläche hast?
-
Im Include oben kannst du es nach belieben einstellen, zu deinem Problem:
#define NoDM_NOWEAPONS (1) //Sollen die Waffen vom Spieler in der NoDM Zone abgenommen und wieder zurückgegeben werden? (Ja = 1; Nein = 0) (Default: 1) -
-
Die Line ist in Ordnung, schick die Zeilen oberhalb.
-
Also ich versteh dich, am besten lässt du einen globalen String erstellen wie zB.:
new gTextdrawString[256];
und erstellt den Textdraw mit dem String wie:
TextDrawCreate(X, Y, gTextdrawString);
und ändern tust du es halt dann mit
format(gTextdrawString, sizeof(gTextdrawString), "Blah Blah");
-
Ich empfehle euch lieber das hier: [INCLUDE] Templer´s NoDM-Zone
-
#define MAX_DESTROY_TIME (120) //Nach wieviel Sekunden Fahrzeug zerstört werden soll.
new gVehiclesLastUsed[MAX_VEHICLES];
new bool:gVehiclesCreated[MAX_PLAYERS];forward Check_DestroyVehicle(vehicleid);
public Check_DestroyVehicle(vehicleid)
{
gVehiclesCreated[vehicleid] = false;
return DestroyVehicle(vehicleid);
}#define DestroyVehicle Check_DestroyVehicle
//Dieser obige Code muss soweit wie möglich oben im Script sein, der Rest ist egal ^^
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if((newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER) && gVehiclesCreated[GetPlayerVehicleID(playerid)]) gVehiclesLastUsed[GetPlayerVehicleID(playerid)] = gettime();
}public OnVehicleSpawn(vehicleid)
{
gVehiclesLastUsed[vehicleid] = gettime();
gVehiclesCreated[vehicleid] = true;
}public OnVehicleStreamIn(vehicleid, forplayerid)
{
if((gettime() - gVehiclesLastUsed[vehicleid]) > MAX_DESTROY_TIME && gVehiclesCreated[vehicleid]) DestroyVehicle(vehicleid);
} -
-
Naja, dass ist auch Sinn der Sache das nach 2 min alle Autos verschwinden ^^. Du musst halt selbst definieren welche nicht verschwinden solln und Co.
-
Das Folgende ist natürlich für alle Autos derzeit (musst halt umschreiben) und ist um einiges besser als der Vorschlag von ]hp[
#define MAX_DESTROY_TIME (120) //Nach wieviel Sekunden Fahrzeug zerstört werden soll.
new gVehiclesLastUsed[MAX_VEHICLES];
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER) gVehiclesLastUsed[GetPlayerVehicleID(playerid)] = gettime();
}public OnVehicleSpawn(vehicleid)
{
gVehiclesLastUsed[vehicleid] = gettime();
}public OnVehicleStreamIn(vehicleid, forplayerid)
{
if((gettime() - gVehiclesLastUsed[vehicleid]) > MAX_DESTROY_TIME) DestroyVehicle(vehicleid);
} -
Ok, ich hasse diese Extra Labels, die man nicht ohne Probleme ändern kann... Also lösch einfach alles raus, was du von oben eingefügt hast und füg diese Sachen neu ein...
new PlayerText3D:TextForPlayer[MAX_PLAYERS];
public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext, "/a", true, strfind(cmdtext, " ", false)))
{
if(!IsPlayerConnected(playerid)) return 1;
new reason[32], Float:PlayerPos[3];
strmid(reason, cmdtext, strfind(cmdtext, " ", false)+1, strlen(cmdtext));
if(!strlen(reason)) return SendClientMessage(playerid, 0xFFFFFF00, "Benutze : /a [Text]");
GetPlayerPos(playerid, PlayerPos[0], PlayerPos[1], PlayerPos[2]);
DeletePlayer3DTextLabel(playerid, TextForPlayer[playerid]);
TextForPlayer[playerid] = CreatePlayer3DTextLabel(playerid,reason,0x008080FF,PlayerPos[0], PlayerPos[1], PlayerPos[2],40.0);
return SendClientMessage(playerid, 0xFFFFFF00, "3D-Text (Spielerseitig) erstellt.");
}
}