SetVehicleParamsEx(i,Vehicle[i][engine],Vehicle[i][lights],Vehicle[i][alarm],Vehicle[i][Abgeschlossen],Vehicle[i][bonnet],Vehicle[i][boot],0);
Beiträge von carlos1710
-
-
Ich verstehe nicht ganz, hier mal ein gröserer Ausschnitt.
switch(Vehicle[i][Abgeschlossen])
{
case 1:
{
Vehicle[i][Abgeschlossen] = 0;
printf("%d",Vehicle[i][Abgeschlossen]);
dini_IntSet(Autodatei,"Abgeschlossen",0);
SetVehicleParamsEx(i,Vehicle[i][engine],Vehicle[i][lights],Vehicle[i][alarm],Vehicle[i][Abgeschlossen],Vehicle[i][bonnet],Vehicle[i][boot],0);
SendClientMessage(playerid,COLOR_GREEN, "Auto aufgeschlossen");
return 1;
}
case 0:
{
Vehicle[i][Abgeschlossen] = 1;
printf("%d",Vehicle[i][Abgeschlossen]);
dini_IntSet(Autodatei,"Abgeschlossen",1);
SetVehicleParamsEx(i,Vehicle[i][engine],Vehicle[i][lights],Vehicle[i][alarm],Vehicle[i][Abgeschlossen],Vehicle[i][bonnet],Vehicle[i][boot],0);
SendClientMessage(playerid,COLOR_RED, "Auto abgeschlossen");
return 1;
}
}
Ist ebenfalls noch stark gekürtzt auch hier funktionirt alles ist das auto offen, solle es zu gemacht werden, ist es wir wird es auf gemacht.
Ich bekomme die Prints die stimmen und die Clientmessage, die je nach fall die richtige ist.
Nur ist das auto nicht offen zu.
Der selbe Code mit anderen variablen ist auhc bei motorhaube kofferraum usw funktionirt auch nicht ganz
//EDIT: Ich habe gerade herausgefunden, dass diese Funktion nirgendwo im Script funktionirt. -
Der kommt bis dahin, Wie oben beschrieben ist ein print drinne
printf("%d",Vehicle[i][Abgeschlossen]);
Das wird aufgerufen und die variable wird auch von 1 auf 0 gesetzt wie es sein soll.
und der letzte debug ist die ClientMessage die auch aufgerufen/angezeigt wird -
Ich habe vergessen zu erwähnen, das hab ich ganz oben unter OnGameMode
Ist also drinn -
HayLeute,
Ich bin nun fast fertig mit meinem Carsystem, aber SetVehicleParamsEx wird vom Compiler erfolgreich ignorort.
Hier ein Beispiel:
switch(Vehicle[i][Abgeschlossen])
{
case 1:
{
Vehicle[i][Abgeschlossen] = 0;
printf("%d",Vehicle[i][Abgeschlossen]);
dini_IntSet(Autodatei,"Abgeschlossen",0);
SetVehicleParamsEx(i,Vehicle[i][engine],Vehicle[i][lights],Vehicle[i][alarm],Vehicle[i][Abgeschlossen],Vehicle[i][bonnet],Vehicle[i][boot],0);
SendClientMessage(playerid,COLOR_GREEN, "Auto aufgeschlossen");
return 1;
}
Ein langer CMD zum Abschließen meines Autos, funktioniert alles von der geprintetet Variable bis zur ClientMessage, aber die Türen sind immernoch nicht zu.
Das selbe Üroblem hab cih auch mit Kofferraum,Lichter usw.
Wiso wird das ignorirt? -
Hallo Leute, Ich habe nun endlich mein Carsystem fertig und mutte festtellen das, überall wo SetVehiclePaeramsEx stand nichts passirt
Hier ein Beispiel:
switch(Vehicle[i][Abgeschlossen])
{
case 1:
{
Vehicle[i][Abgeschlossen] = 0;
printf("%d",Vehicle[i][Abgeschlossen]);
dini_IntSet(Autodatei,"Abgeschlossen",0);
SetVehicleParamsEx(i,Vehicle[i][engine],Vehicle[i][lights],Vehicle[i][alarm],Vehicle[i][Abgeschlossen],Vehicle[i][bonnet],Vehicle[i][boot],0);
SendClientMessage(playerid,COLOR_GREEN, "Auto aufgeschlossen");
return 1;
}
Ein sehr langer CMD(Ser stark gekürtzts) auch zum Abschlueßen des Autos.
Es funktionirt alles die Variable Abegschlossen wird auf 1 oder 0 gesetzt und geprintet dann in die Datei geschrieben aber das Auto wird nicht abgeschlossen.
Die Nachricht am ende wird dann auch noch gut ausgegeben.
Meine Frage:Wiso wird das Auto nicht abgeschlossen.Es funktionirt weder beim Motor,Kofferraum,Motorhaube,Lcihter und alle sehen so ähnlich aus wie oben, nur mit anderen variabeln. -
So kann man gut arrys erklären.
Haxler hat zu mir mal gesagt eine Arry ist wie ien Schrank mit vielen Schubladen und Kästchen
Arry[MAX_PLAYERS][100]
Erstellt im Schrank für jeden Spieler eine Schublade, wenn der spieler sie öffnet, findet er 100 leere neue Schubladen oder volle, in die er etwas rein legen kann.
Das bedeutet es gäbe insgesamt
MAX_PLAYERS*100 Schubladen
erweiterbar durch
Arry[MAX_PLAYERS][100][10]
Nun hat jeder Spieler eine Schublade mit weiteren 100 Schubladen und in diesen 100 Schubladen sind wieder 10 wo er etwas reinlegen kann:
MAX_PLAYERS * 100 * 10 Schubladen. -
Was mich am new immer verwirrt, wie gbt man den platz im arbeitsspeicher wieder frei.
In c++ muss man dafür die adresse in einem zeiger speichern
int *variable
aber in pawn hab ich sowas nie nie gesehen -
1. ein string ist eine zeichenkette, meistens steht er zeischen 2 "
bsp: SendClientMesasge(playerid,FARBE,"Ich bin ein string/ eine zeichenfolge");
die nummer 128 wenn du den string definirst steht dafür, wie viele buchstaben er hat
Bsp: Möchtest du nur Hallo also variable speichern brauchst du ein string mit maximal 5 Zeichen.
2.
Mit einem New kanst du dinge definiren z.b. variabeln die du später im Script brauchst.
mit einem forward kannst duein public einleiten bzw definiren.
ein enum ist schweer zu erklären, es ist wie wenn du verschiedene variabeln zusammen fassen willst.
3. Frag nur -
nein kommt kein Error und wenn die abfrage positiv ist geht auch alles bis zum nächsten return nur wird halt der return am ende nicht ausgeführt, davor passirt was was den server verwirrt
-
Du brauchst die include dudb
-
Hallo Brotfische,
Ich habe nun ein befehl geschrieben zum vergeben von autoschlüsseln, aber irgendwie sagt der server mir :SERVER:Unknown Command
dcmd_gibschluessel(playerid , params[])
{
new pname[MAX_PLAYERS],accFormat[128];
new pID,nummernschild[32];
if(sscanf(params, "ds", pID, nummernschild))
{
return SendClientMessage(playerid,COLOR_RED, "Nutze: /gibschluessel [SpielerID] [FahrzeugNummernschild]");
}
else
{
if(!IsPlayerConnected(pID))
{
return SendClientMessage(playerid,COLOR_RED,"Dieser Spieler ist nicht online!");
}
else
{
GetPlayerName(playerid,pname,sizeof pname);
format(accFormat,sizeof accFormat,"Spieler/%s.datei",pname);
for(new i=1;i<=2000;i++)
{
printf("%d",i);
if(strcmp(nummernschild,Schild[playerid][i][nummer]) == 0)//ist diese abfrage positiv funktioniert alles, ist die 2000 mal negativ sagt der server ,er kenne den befehl nit
{
new datei[50];
format(datei,50,"car%d",i);
dini_Set(accFormat,datei,"0");
Schild[playerid][i][nummer] = 0;
for(i=1;i<=2000;i++)
{
if(strcmp("0",Schild[playerid][i][nummer]) == 0)
{
new str[256];
format(str,256,"Du hast von %s die Schlüssel für das Auto mit dem Kennzeichen %s bekommen",pname,nummernschild);
SendClientMessage(pID,COLOR_BLUE,str);
GetPlayerName(pID,pname,sizeof pname);
format(accFormat,sizeof accFormat,"Spieler/%s.datei",pname);
format(datei,50,"car%d",i);
dini_Set(accFormat,datei,nummernschild);
Schild[pID][i][nummer] = nummernschild;
format(str,256,"Du hast %s die Schlüssel für das Auto mit dem Kennzeichen %s gegeben",pname,nummernschild);
SendClientMessage(playerid,COLOR_BLUE,str);
return 1;
}
}
}
}
SendClientMessage(playerid,COLOR_RED,"Du hast kein Auto mit diesem Numemrnschild!");//Das sollte kommen, statdessen steht da halt, dass der server den befehl nicht kennt
}
}
return 1;
}
Ich habe schon die Vermutung, dass die vielen returns dabei was zu tun haben, weis aber nicht was. -
shit ja grad seh ichs ok mal ändern und testen
//EDIT:So er error ist behoben, aber der string istz immernoch leer
//EDIT2:Nun funktionirt alles hab noch 2 variabeln verändert, aber nun sagt mir der server bei einem cmd ,Das er ihn nicht kenne,
Hier ein ausschnitt davon
else//Sscanf hat alle Daten bekommen
{
GetPlayerName(playerid,pname,sizeof pname);
format(accFormat,sizeof accFormat,"Spieler/%s.datei",pname);
for(new i=1;i<=2000;i++)
{
if(strcmp(nummernschild,Schild[playerid][i][nummer]) == 0)//wenn diese Abfrage positiv ist, funktionirt alles wie es soll.Wenn sie aber nicht übereinstimmt sagt der server Unknown Command anstatt das was unten steht.
{
new datei[50];
format(datei,50,"car%d",i);
dini_Set(accFormat,datei,"0");
for(i=1;i<=2000;i++)
{
if(strcmp("0",Schild[playerid][i][nummer]) == 0)
{
new str[256];
format(str,256,"Du hast von %s die Schlüssel für das Auto mit dem Kennzeichen %s bekommen",pname,nummernschild);
SendClientMessage(pID,COLOR_BLUE,str);
GetPlayerName(pID,pname,sizeof pname);
format(accFormat,sizeof accFormat,"Spieler/%s.datei",pname);
format(datei,50,"car%d",i);
dini_Set(accFormat,datei,nummernschild);
format(str,256,"Du hast %s die Schlüssel für das Auto mit dem Kennzeichen %s gegeben",pname,nummernschild);
SendClientMessage(playerid,COLOR_BLUE,str);
return 1;
}
}
}
}
return SendClientMessage(playerid,COLOR_RED,"Du hast kein Auto mit diesem Numemrnschild!");
}
}
return 1;
} -
Alsoo:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new Float:time;
new pname[MAX_PLAYERS],accFormat[128],acccFormat[128];
GetPlayerName(playerid,pname,sizeof pname);
format(accFormat,sizeof accFormat,"Spieler/%s.datei",pname);
format(acccFormat,sizeof accFormat,"Unregistriert/%s.datei",pname);
switch(dialogid) // dialogid auswählen
{
case DIALOG_LOGIN: // ID Login
{
if(response)
{
if(!strlen(inputtext))
{
SendClientMessage(playerid,0xFFFFFFFF,"Du hast kein Passwort angegeben und wurdest gekickt!");
Kick(playerid);
return 1;
}
if(strcmp(inputtext,dini_Get(accFormat,"Passwort")) == 0) // Passwort Direkt aus der Datei Laden
{
Spieler[playerid][geld] = dini_Int(accFormat,"geld");
Spieler[playerid][skin] = dini_Int(accFormat,"skin");
Spieler[playerid][lastx] = dini_Float(accFormat,"lastx");
Spieler[playerid][lasty] = dini_Float(accFormat,"lasty");
Spieler[playerid][lastz] = dini_Float(accFormat,"lastz");
Spieler[playerid][eingeloggt] = 1; // Spieler ist nun erfolgreich eingeloggt
new datei[50];
for(new i=1;i<=2000,i++)// ezile 611
{
format(datei,50,"car%d",i);
strmid(Schild[playerid][i][nummer],dini_Get(accFormat,datei),0,strlen(dini_Get(accFormat,datei)));
time=i*0.05;
format(datei,50,"%.2f Prozent Fertig",Float:time);
printf("Schild: %s",Schild[playerid][i][nummer]);
SendClientMessage(playerid,0xFFFFFFFF,datei);
}
SendClientMessage(playerid,0xFFFFFFFF,"Du wurdest erfolgreich eingeloggt.");
}
else
{
SendClientMessage(playerid,0xFFFFFFFF,"Das Passwort war Falsch und du wurdest gekickt!");
Kick(playerid);
}
}
else
{
SendClientMessage(playerid,0xFFFFFFFF,"Du hast abgebrochen und wurdest gekickt!");
SendClientMessage(playerid,0xFFFFFFFF,"Du must dich einloggen um spielen zu können!");
Kick(playerid);
return 1;
}
}
case DIALOG_REG: // ID Registrieren
Das ist das ganze loginsystem
glaub von blackfox erweitert
Wenn alles funktionirt sollte in allen 2000 arryelementen ein string oder eine 0 stehen, jenachdem was hinter car[i] steht.
Funktionirt nicht stadessen meldet der compiler den error
C:\Scripting\samp server\The Sims RPG\samp03csvr_R2-2_win32\gamemodes\amx.pwn(611) : error 001: expected token: ";", but found ")"
zeile 611 = die schleife
Der error kommt weil ich das ";" wie Haxler sagte wegnahm (davor gigs udn die schleife lief durch)
Nun hab ich die arrys printen lassen und sie sind alle leer keine 0 und kein nummernschild stehen drinne -
if(strcmp(inputtext,dini_Get(accFormat,"Passwort")) == 0) // Passwort Direkt aus der Datei Laden
{
Spieler[playerid][geld] = dini_Int(accFormat,"geld");
Spieler[playerid][skin] = dini_Int(accFormat,"skin");
Spieler[playerid][lastx] = dini_Float(accFormat,"lastx");
Spieler[playerid][lasty] = dini_Float(accFormat,"lasty");
Spieler[playerid][lastz] = dini_Float(accFormat,"lastz");
Spieler[playerid][eingeloggt] = 1; // Spieler ist nun erfolgreich eingeloggt
new datei[50];
for(new i=1;i<=2000,i++)// beginn der Schleife
{
dass ist vor der schleife -
Also eigentlich stimmen beide Werte
format(accFormat,sizeof accFormat,"Spieler/%s.datei",pname);
und in dem accFormat steht
car1=lol
d.h. es müste lol geprintet werden
//EDIT:Haxler ich bin auch deiner meinung das die Schleife falsch ist, aber wenn ich es richtig machen will, vermisst der compiler das;
C:\Scripting\samp server\The Sims RPG\samp03csvr_R2-2_win32\gamemodes\amx.pwn(611) : error 001: expected token: ";", but found ")"
zeile 611 = die schleife -
Normales speichern und abrufen kann ich, diese nummernschilder dienen als schlüssel zum prüfen ob der spieler die schlüssel für das auto hat.
Ich möchte einfach den string der hinter Car[i] steht in die arry schreiben -
Ich habe es so, dass jeder spieler in seiner Datei 2000 Numemrnschilder hat.
Damit bei befehlen nicht immer die dini geöffnet wird, wird das alles am anfang in der arry mit 2000 elementen pro spieler gespeichert.
In dem befehlen werd ich dann abfragen ob eines der strngs in den Arrys mit einem anderen üßberein stimmt, das funktionirt soweit.
Aber das laden funktionirt nicht so wie es soll.
die Nummernschilder in der spielerdatei sehen so aus
Car1=etwas
Car2=nochwas
Car3=wasanderes
[...]
Car2000=1234abcdund das soll alles in der arry stehen, für jeden eintrag in ein neues arryelement abspeichern
-
Ich hab mal iim Wiki geschaut, da stand zwar auch nicht viel Hilfreiches aber so wie es nun im Scritp steht hat der compiler kein Error ich teste mal.
Was ich reinschreiben will. . .
In die arry will ich das reinschreiben was in der dini unter carid[i] steht
//EDIT:Also nun steht in der arry garnichts mehr, der compiler printet nichtmal eine 0
habs so im script
strmid(Schild[playerid][i][nummer],dini_Get(accFormat,datei),0,strlen(dini_Get(accFormat,datei))); -
Kannst du mal bitte ein Beispiel machen, ich habe strmid nopch nie benutzt wusst auch noch nicht das es diese alternative gibt.
und was ist daran anderst wie im Format?