unter
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
Ich mach ihn grad als Command und versuch da mein Glück
unter
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
Ich mach ihn grad als Command und versuch da mein Glück
Doch wurde es, es ist ein Fahrschulauto :o
Es spawnt ja auch nicht mehr an seiner alten Position und hat ja in der DB auch seinen Grund/Preis usw.
Und /oPark ging ja auch
Toll grad eben das andere installiert
Aber endlich wieder Updates, hört sich alles gut an auch wenn das mit der Schrift nicht wirklich nötig ist
Leider wird keine Fraktion rausgeworfen
Und ps:
new i = GetFrakVehicleIdx(GetPlayerVehicleID(playerid));
if(i != -1)
{
if(VehInfo[i][Abgeschleppt] == 1)
{
new string[145];
format(string, sizeof(string),"Preis %i€ \nGrund: %s",VehInfo[i][Preis],VehInfo[i][Grund]);
ShowPlayerDialog(playerid,DIALOG_aPARK,DIALOG_STYLE_MSGBOX,"Strafzettel",string,"Freikaufen","Abbrechen") ;
}
}
Es funktioniert irgendwie nicht
Auch als ich SendClientMessage drin hatte ging nichts
Perfekt
Ja hab es noch gemerkt
Danke
Problem 2/4 hab ich dann doch noch alleine geschafft
ich teste mal alles
Kurze frage, irgendwie geht mein Fraksystem nicht also jeder kann fast mit jedem auto fahren..
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(IsPlayerInAllowedFrakVeh(playerid, 1))
if(SpielerInfo[playerid][pTeam] != 1 && isinADAC[playerid] != 1) {
SendClientMessage(playerid,hinweis1,"Du hast keinen Schlüssel!");
TogglePlayerControllable(playerid,false);
TogglePlayerControllable(playerid,true); }
und zweites
public OnPlayerStateChange(playerid, newstate, oldstate)
{
//____Polizei(1)___//
if(newstate == PLAYER_STATE_DRIVER) {
if(IsPlayerInAllowedFrakVeh(playerid, 1))
if(SpielerInfo[playerid][pTeam] != 1 && isinADAC[playerid] != 1)
{
SendClientMessage(playerid, hinweis1, "Du bist kein Polizist!");
return RemovePlayerFromVehicle(playerid);
}
}
//____Sanitäter(2)___//
else if(newstate == PLAYER_STATE_DRIVER) {
if(IsPlayerInAllowedFrakVeh(playerid, 2))
if(SpielerInfo[playerid][pTeam] != 2 && isinADAC[playerid] != 1)
{
SendClientMessage(playerid, hinweis1, "Du bist kein Sanitäter/Arzt!");
return RemovePlayerFromVehicle(playerid);
}
}
/Edit
Ich steige in das Auto und bekomme leider keine Nachricht
Natürlich, nur findet er die AMX von deinem Gamemode nicht(Falls ich falsch liege bitte verbessern)
[23:01:08] Script[gamemodes/GeTmyselfmade.amx]: Run time error 19: "File or function is not found"
Also kleiner Bericht
Die oPark funktion funktioniert teilweise, undzwar wird die neue Position nicht in der Datenbank gespeichert, du hast nämlich ne kleinigkeit vergessen aber ich glaube meins ist etwas Falsch
Schau
ocmd:opark(playerid, params[])
{
new preis, grund[34], string[128];
new Float:NeuX,Float:NeuY,Float:NeuZ,Float:NeuR;
if(sscanf(params,"is",preis,grund))return SendClientMessage(playerid, Color_Green,"Benutzung: /opark [Preis][Grund]");
if(SpielerInfo[playerid][pTeam] != 5) return SendClientMessage(playerid, hinweis1,"Du bist kein Mitglied des ADAC's!");
if(isinADAC[playerid] != 1) return SendClientMessage(playerid, hinweis1, "Du bist nicht in der ADAC Zone!");
else if(preis < 0 || preis > 1000) return SendClientMessage(playerid, hinweis1,"Du kannst das Bußgeld nicht weniger als 0 und mehr als 1000 kosten lassen!");
{
new i = GetFrakVehicleIdx(GetPlayerVehicleID(playerid));
if(i == -1) return SendClientMessage(playerid, hinweis1, "Du bist nicht in einem abschleppbaren Auto!");
format(VehInfo[i][Grund], 32, grund);
GetPlayerPos(playerid,NeuX,NeuY,NeuZ,NeuR);//1 warning 202: number of arguments does not match definition
VehInfo[i][Preis] = preis;
VehInfo[i][Abgeschleppt] = 1;
VehInfo[i][NewX] = NeuX;//Von hier
VehInfo[i][NewY] = NeuY;
VehInfo[i][NewZ] = NeuZ;
VehInfo[i][NewR] = NeuR;//Bis hier vergessen
format(string, sizeof(string),"|Strafzettel| Preis %i€ Grund: %s",preis,grund);
SendClientMessage(playerid, Color_Green, string);
SaveVehicle(i);
}
return 1;
}
So, jetzt hab ich ne kleine Frage undzwar, weiß das System dass wenn Abgeschleppt auf 1 ist, dass auto auch bei New spawnen soll?
Und wäre das richtig?(nur ein kleiner test) Weil ich bekomme keine Nachricht im auto..
new i = GetFrakVehicleIdx(GetPlayerVehicleID(playerid));
new grund = VehInfo[i][Grund], preis = VehInfo[i][Preis], string[128];
if(i == 1)
if(VehInfo[i][Abgeschleppt] == 1) {
format(string, sizeof(string),"|Strafzettel| Preis %i€ Grund: %s",preis,grund);
SendClientMessage(playerid, Color_Green, string);
}
//EDIT
Kleiner bericht, die Warning geht weg wenn ich es ohne "NeuR" mache, aber es wird in der datenbank sonst alles jetzt gespeichert.
Wie mach ich das jetzt am besten? achja hab ne kleine abfrage gemacht ist die richtig?
if(VehInfo[i][Abgeschleppt] != 1){
return VehInfo[i][veh_ID] = CreateVehicle(VehInfo[i][ModellID],VehInfo[i][PosX],VehInfo[i][PosY],VehInfo[i][PosZ],VehInfo[i][PosR],VehInfo[i][Farbe1],VehInfo[i][Farbe2],-1);//20
}
else
{
VehInfo[i][veh_ID] = CreateVehicle(VehInfo[i][ModellID],VehInfo[i][NewX],VehInfo[i][NewY],VehInfo[i][NewZ],VehInfo[i][NewR],VehInfo[i][Farbe1],VehInfo[i][Farbe2],-1);//20
}
}
PS: Wenn ich in ein Abgeschlepptes auto steige kommt immer noch keine Meldung -.-
MfG
Okey nur eine Warning und zwar beim Laden stock
if(added) SaveVehicles(i);
Wenn mit "i" ist es nicht definiert und wenn ohne
warning 202: number of arguments does not match definition
Und wie frag ich dann ab, wenn ein spieler das auto betritt ob es einen strafzettel hat?
und wie viel er zahlen muss und so
Der soll in dem Auto sein, da er in seiner Zone ja alle Fahrzeuge fahren darf.
ich nutze den Stock
Hier
stock SaveVehicles()
{
new string[34];
for(new i = 0; i < MAX_VEHICLES; i++)
{
format(string, sizeof string, "%d", i);
mysql_SetInt("Auto", "ModellID", VehInfo[i][ModellID], "ID", string);
mysql_SetInt("Auto", "Fraktion", VehInfo[i][Fraktion], "ID", string);
mysql_SetFloat("Auto", "PosX", VehInfo[i][PosX], "ID", string);
mysql_SetFloat("Auto", "PosY", VehInfo[i][PosY], "ID", string);
mysql_SetFloat("Auto", "PosZ", VehInfo[i][PosZ], "ID", string);
mysql_SetFloat("Auto", "PosR", VehInfo[i][PosR], "ID", string);
mysql_SetInt("Auto", "Abgeschleppt", VehInfo[i][Abgeschleppt], "ID", string);
mysql_SetInt("Auto", "inADAC", VehInfo[i][inADAC], "ID", string);
mysql_SetInt("Auto", "Preis", VehInfo[i][Preis], "ID", string);
mysql_SetString("Auto", "Grund", VehInfo[i][Grund], "ID", string);
mysql_SetFloat("Auto", "NewX", VehInfo[i][NewX], "ID", string);
mysql_SetFloat("Auto", "NewY", VehInfo[i][NewY], "ID", string);
mysql_SetFloat("Auto", "NewZ", VehInfo[i][NewZ], "ID", string);
mysql_SetFloat("Auto", "NewR", VehInfo[i][NewR], "ID", string);
mysql_SetInt("Auto", "Farbe1", VehInfo[i][Farbe1], "ID", string);
mysql_SetInt("Auto", "Farbe2", VehInfo[i][Farbe2], "ID", string);
}
return 1;
}
Okey also gut, ich hab jetzt mal da "Grundgerüst" erstellt.
ocmd:opark(playerid, params[])
{
new preis, grund[34];
if(sscanf(params,"is",preis,grund))return SendClientMessage(playerid, Color_Green,"Benutzung: /opark [Preis][Grund]");
if(SpielerInfo[playerid][pTeam] != 5) return SendClientMessage(playerid, hinweis1,"Du bist kein Mitglied des ADAC's!");
if(isinADAC[playerid] != 1) return SendClientMessage(playerid, hinweis1, "Du bist nicht in der ADAC Zone!");
else if(preis < 0 || preis > 1000) return SendClientMessage(playerid, hinweis1,"Du kannst das Bußgeld nicht weniger als 0 und mehr als 1000 kosten lassen!");
{
//Hier soll ja dann einfach nur der Preis und den Grund für das jeweilige Auto gespeichert werden
//abgeschleppt auf 1
}
return 1; }
Und dann halt ich denke mal bei onplayerentervehicle dann eine abfrage ob das auto abgeschleppt ist und dann soll sich ein dialog öffnen, wo der preis und der grund drin ist und wenn man bezahlt soll abgeschleppt auf 0 gestellt werden
Jo Errors und Warnings weg.
Wie erstelle ich jetzt den befehl für das ADAC und für die, wo ihr Auto freikaufen wollen?
Adac geht in das auto und macht /opark [Grund] [Preis]
Spieler steigt in ein Auto (zb cop ins copcar)
Möchtest du das auto freikaufen?
[grund][prei]
Also jetzt kommt ne Warnin
VehInfo[i][veh_ID] = CreateVehicle(VehInfo[i][ModellID],VehInfo[i][PosX],VehInfo[i][PosY],VehInfo[i][PosZ],VehInfo[i][PosR],VehInfo[i][Farbe1],VehInfo[i][Farbe2],-1);//20
warning 213: tag mismatch
Und auch hier
stock IsPlayerInAllowedFrakVeh(playerid, frak)
{
new vehid = GetPlayerVehicleID(playerid);
new idx = -1;
for(new i=0; i<sizeof(VehInfo); i++)
{
if(VehInfo[i][veh_ID] == vehid)//hier tag mismatch
{
idx = i;
break;
}
}
if(idx == -1) return 0;
if(VehInfo[idx][Fraktion] != frak) return 0;
return 1;
}
Sonst kommt nichts
Okey, und was wenn ich nur fragen will, ob es ein cop car ist ?
soll ich dann
new frakid = VehInfo[GetPlayerVehicleID(playerid)][Fraktion]
if(frakid[playerid] != 1) {
return RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid, hinweis1, "Du bist kein Polizist!"); }
Oder wie?
if(newstate == PLAYER_STATE_DRIVER)
{
if(!VehInfo[GetPlayerVehicleID(playerid)][Fraktion] && isinADAC[playerid] != 1) {
SendClientMessage(playerid,hinweis1,"Du hast keinen Schlüssel!");
return RemovePlayerFromVehicle(playerid);
}
}
So funktioniert es nicht, es können alle rein und wenn ich das ! weg mache kann garkeiner rein..
Ja gut, jetzt ist alles wieder beim alten und alle Fahrzeuge stehen da wo sie sollen
Jetzt nur noch um auf die abfrage zurück zu kommen.
Wie kann ich definieren das zb Auto 1 von den Cops gefahren wird?
Hi Jeffry.
Es Funktioniert jetzt alles soweit, danke :)(wo soll ich den dein Code austauschen? Bei welcher schleife)
Nur Manche Fahrzeuge spawnen einfach doppelt aufeinander?
Liegt es vielleicht daran das bei OneGamemodeinit auch noch mal ein Auto erstellt wird? Aber das ist ja ein muss?
Und meine Tore, bzw Objecte sind jetzt einfach nicht mehr da? Hab 71 Autos eingefügt brauch ich vielleicht ein Streamer oder so?
MfG
//Hier der code von dem CreateVehicle in OnGameModeInit
for(new g;g<MAX_VEHICLES;g++)
{
CreateVehicle(FrakAutos[g][ModellID],FrakAutos[g][PosX],FrakAutos[g][PosY],FrakAutos[g][PosZ],FrakAutos[g][PosR],FrakAutos[g][Farbe1],FrakAutos[g][Farbe2],-1);//250
}
Habe jetzt alles so geändert wie du es gesagt hast, leider wird kein Auto erstellt
Schau
Hab alles richtig gemacht
perfekt
hier new FrakAutos[][VehEnum] =
{
//ModelID, Frak, X,Y,Z,Farbe1,Farbe2
{597,-1595.8781,693.9594,-5.4741,180.1654, 198, 1},//zeile 123
{597,-1595.8781,693.9594,-5.4741,179.5844, 198, 1}//zeile 123
};
Nur noch hier:
CreateVehicle(VehInfo[i][ModellID],VehInfo[i][PosX],VehInfo[i][PosY],VehInfo[i][PosZ],VehInfo[i][PosR],VehInfo[i][Farbe1],VehInfo[i][Farbe2],-1);//20
warning 213: tag mismatch
enum VehEnum {
ModellID,
Float:PosX,
Float:PosY,
Float:PosZ,
Float:PosR,
Farbe1,
Farbe2,
Fraktionp
}
enum VehDaten
{
ModellID,
Fraktion,
Float: PosX,
Float: PosY, // Das sollen die Koord. sein wo es üblicherweiße Spawnt bsp SFPD
Float: PosZ,
Abgeschleppt,//Falls auf 1 darf es nicht mehr bei dem üblichen Spawn spawnen!
inADAC,//Das es in der ADAC Zone ist und die ADAC'ler vollsten Zugriff auf das Fahrzeug haben
Preis,
Grund[32],
Float: NewX,
Float: NewY,//Stattdessen soll es hier Spawnen(Da wo der ADAC /oPark gemacht hat)
Float: NewZ
}
Damit du es unterscheiden kannst
Von Was brauchst du noch Daten?
PS: Hab Warnings
C:\Users\Tobi\Desktop\samp03z_svr_R1_win32\gamemodes\newrl.pwn(1818) : warning 213: tag mismatch
C:\Users\Tobi\Desktop\samp03z_svr_R1_win32\gamemodes\newrl.pwn(1818) : warning 213: tag mismatch
C:\Users\Tobi\Desktop\samp03z_svr_R1_win32\gamemodes\newrl.pwn(1819) : warning 213: tag mismatch
C:\Users\Tobi\Desktop\samp03z_svr_R1_win32\gamemodes\newrl.pwn(1819) : warning 213: tag mismatch
C:\Users\Tobi\Desktop\samp03z_svr_R1_win32\gamemodes\newrl.pwn(1820) : warning 217: loose indentation
C:\Users\Tobi\Desktop\samp03z_svr_R1_win32\gamemodes\newrl.pwn(1820) : warning 213: tag mismatch
C:\Users\Tobi\Desktop\samp03z_svr_R1_win32\gamemodes\newrl.pwn(1820) : warning 213: tag mismatch
C:\Users\Tobi\Desktop\samp03z_svr_R1_win32\gamemodes\newrl.pwn(1820) : warning 213: tag mismatch
C:\Users\Tobi\Desktop\samp03z_svr_R1_win32\gamemodes\newrl.pwn(1802) : warning 204: symbol is assigned a value that is never used: "query"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
9 Warnings.
stock LoadVehicles()
{
new string[3], query[128], bool:added;//02
for(new i=0; i < MAX_VEHICLES; i++)
{
format(string, sizeof string, "%d", i);
format(VehInfo[i][Grund], 32, mysql_GetString("Autos", "Grund", "ID", string));
VehInfo[i][ModellID] = mysql_GetInt("Auto", "ModellID", "ID", string);
VehInfo[i][Fraktion] = mysql_GetInt("Auto", "Fraktion", "ID", string);
VehInfo[i][PosX] = mysql_GetFloat("Auto", "PosX", "ID", string);
VehInfo[i][PosY] = mysql_GetFloat("Auto", "PosY", "ID", string);
VehInfo[i][PosZ] = mysql_GetFloat("Auto", "PosZ", "ID", string);
VehInfo[i][Abgeschleppt] = mysql_GetInt("Auto", "Abgeschleppt", "ID", string);
VehInfo[i][inADAC] = mysql_GetInt("Auto", "inADAC", "ID", string);
VehInfo[i][Preis] = mysql_GetInt("Auto", "Preis", "ID", string);
VehInfo[i][NewX] = mysql_GetFloat("Auto", "NewX", "ID", string);
VehInfo[i][NewY] = mysql_GetFloat("Auto", "NewY", "ID", string);
VehInfo[i][NewZ] = mysql_GetFloat("Auto", "NewZ", "ID", string);
VehInfo[i][Farbe1] = mysql_GetFloat("Auto", "Farbe1", "ID", string);//18
VehInfo[i][Farbe2] = mysql_GetFloat("Auto", "Farbe2", "ID", string);//19
CreateVehicle(VehInfo[i][ModellID],VehInfo[i][PosX],VehInfo[i][PosY],VehInfo[i][PosZ],VehInfo[i][PosR],VehInfo[i][Farbe1],VehInfo[i][Farbe2],-1);//20
}
if(added) SaveVehicles();
return 1;
}