Poste doch mal den Inhalt der stadthalle.ini aus dem Ordner scriptfiles.
Möglicherweise wurde nicht alles korrekt gespeichert o.Ä.
Ich habe in dem Ordner Scriptfiles.
keine stadthalle.ini drin.
Grüße
Poste doch mal den Inhalt der stadthalle.ini aus dem Ordner scriptfiles.
Möglicherweise wurde nicht alles korrekt gespeichert o.Ä.
Ich habe in dem Ordner Scriptfiles.
keine stadthalle.ini drin.
Grüße
Kein Problem
Das mit dem Array verstehe ich nicht, was willst du machen?
Der Error liegt daran, dass der String text zu klein ist, das war wohl mein Fehler. Versuch es mal mit 256 statt 128 Zeichen beim BizLaden.
Also mit Array meinte ich halt den string, die Fraktionskasse später auslesen im 3DTextLabel
mhm, habe nun ein Problem so ist doch eigentlich alles richtig, Der Error ist nun auch weg lag am string ( war zu klein )
nun, ist das Problem wenn ich dann InGame schaue nach den 3DTextLabel wird dieser nicht angezeigt ?
Codes:
stock BizSpeichern()
{
new string[256];
format(string,sizeof(string),"Stadthalle\nKontostand: %d",StadthallenKasse);
dini_Set("stadthalle.ini", "text", string);
dini_IntSet("stadthalle.ini", "farbe", BLAU);
dini_FloatSet("stadthalle.ini", "x", 241.1337);
dini_FloatSet("stadthalle.ini", "y", 112.6405);
dini_FloatSet("stadthalle.ini", "z", 1003.2188);
dini_FloatSet("stadthalle.ini", "dist", 40.0);
dini_IntSet("stadthalle.ini", "world", 0);
dini_IntSet("stadthalle.ini", "los", 0);
return 1;
}
stock BizLaden()
{
{
new text[256];
new farbe;
new Float:koordx, Float:koordy, Float:koordz, Float:dist;
new world, los;
text = dini_Get("stadthalle.ini", "text");
farbe = dini_Int("stadthalle.ini", "farbe");
koordx = dini_Float("stadthalle.ini", "x");
koordy = dini_Float("stadthalle.ini", "y");
koordz = dini_Float("stadthalle.ini", "z");
dist = dini_Float("stadthalle.ini", "dist");
world = dini_Int("stadthalle.ini", "world");
los = dini_Int("stadthalle.ini", "los");
Create3DTextLabel(text,farbe,koordx,koordy,koordz,dist,world,los);
}
return 1;
}
Grüße
Alles anzeigenNein keine Sorge, habe nur geschlafen
Und ich habe gerade gesehen, dass ich die Übersicht nicht verlinkt habe: [ SCRIPTING ] Dateiensystem dini - Dateien erstellen, löschen, speichern, laden
Also schau, du hast diese Codezeile:
dini_IntSet("dateiname.ini", "farbe", BLAU);Gehen wir's durch: dini_IntSet ist die Funktion, die aufgerufen wird. "dateiname.ini" ist der Name der Datei, in die gespeichert werden soll. "farbe" ist der Name der Variable, die gespeichert wird. BLAU ist die definierte Farbe, die du gerne speichern würdest. In der Datei dateiname.ini würde also stehen_Das 0000CCFF (oder so ähnlich) ist die Definition der Konstante BLAU, die du irgendwo im Script hast. Darüber brauchst du dir aber eigentlich keine Gedanken machen, denk dir einfach es wäre blau
Normalerweise mache ich sowas nicht, aber da du anscheinend Interesse daran hast, etwas zu lernen, habe ich dir einen Beispielcode für die Stadthalle geschrieben:
http://pastebin.de/35578
Ich hoffe du verstehst den Code und lernst etwas daraus. Bei Fragen einfach melden.
Erst einmal vielen dank!, dafür das du mir ein beispiel geschrieben hast, war sehr verständlich jedoch hab ich noch
dazu eine Klitzekleine frage
Ich habe es noch nicht getestet, da ich noch eine frage habe, da ich ja ein Biz-System hab wo ich hinterher noch den Biz - Besitzer und dessen Biz - Kasse
anzeigen lassen möchte muss ich das dann etwa mit einem "Array" machen? also:
Hab es jetzt so:
stock BizSpeichern()
{
new string[64];
format(string,sizeof(string),"Stadthalle\nKontostand: %d",StadthallenKasse);
dini_Set("stadthalle.ini", "text", string);
dini_IntSet("stadthalle.ini", "farbe", BLAU);
dini_FloatSet("stadthalle.ini", "x", 241.1337);
dini_FloatSet("stadthalle.ini", "y", 112.6405);
dini_FloatSet("stadthalle.ini", "z", 1003.2188);
dini_FloatSet("stadthalle.ini", "dist", 40.0);
dini_IntSet("stadthalle.ini", "world", 0);
dini_IntSet("stadthalle.ini", "los", 0);
return 1;
}
stock BizLaden()
{
new text[128];
new farbe;
new Float:koordx, Float:koordy, Float:koordz, Float:dist;
new world, los;
text = dini_Get("stadthalle.ini", "text");
farbe = dini_Int("stadthalle.ini", "farbe");
koordx = dini_Float("stadthalle.ini", "x");
koordy = dini_Float("stadthalle.ini", "y");
koordz = dini_Float("stadthalle.ini", "z");
dist = dini_Float("stadthalle.ini", "dist");
world = dini_Int("stadthalle.ini", "world");
los = dini_Int("stadthalle.ini", "los");
Create3DTextLabel(text,farbe,koordx,koordy,koordz,dist,world,los);
return 1;
}
Kriege aber Errors bei dieser Zeile:
Error:
C:\Users\Equu\Desktop\ProjektSelfmade - Stand 19.07.2013\gamemodes\ProjektScript.pwn(14128) : error 047: array sizes do not match, or destination array is too small
Zeile:
text = dini_Get("stadthalle.ini", "text");
Grüße
Alles anzeigenOkay. Also mal zu den Grundlagen:
Einen ganzen 3D-Text auf einmal kann man nicht direkt speichern.
Stattdessen musst du die Daten speichern, die du für die Erstellung eines neuen 3D-Textes brauchst.
Create3DTextLabel(StadthallenText,BLAU,1481.1240,-1808.8945,18.7929,40.0,0,0);Hier musst du also erstmal den Text, die Farbe, die 3 Koordinaten, die DrawDistance, die VirtualWorld und den letzten Sichtbarkeits-Parameter speichern.
Das bedeutet du hast 8 Variablen (davon 1 String, 3 Float und 4 Integer), die gespeichert werden müssen.
Für die Speicherung würde ich dir erstmal dini empfehlen.
Das dini-Include funktioniert ähnlich wie die PVars, die du schon kennst. Man kann also Werte setzen (set) und auslesen (get), zum Beispiel:
new gespeichertefarbe;
dini_IntSet("dateiname.ini", "farbe", BLAU); // Die Farbe für den 3DText wird gespeichert
gespeichertefarbe = dini_Int("dateiname.ini", "farbe"); // Die Farbe wird wieder ausgelesenDas wäre schonmal eine der 8 Variablen, es ist also eigentlich ganz einfach.
Eine Übersicht über alle vorhandenen dini-Funktionen findest du hier:
Ich hoffe du hast alles verstanden. Wenn nicht, einfach nochmal posten
Grüße, FlasH
Erstmal ein Riesen dank, das du mir geantwortet hast!
dachte schon man hätte mich vergessen ..
.. Nun, ich glaub mal das ich es verstanden habe
aber woher weis das Script(dini) das "farbe" die farbe ist die Gespeichert werden muss, und nicht der 3DText ?
Grüße
Wenn du die Informationen auch nach einem Server-Restart noch zur Verfügung haben willst, musst du die Daten irgendwie speichern. WIe du das machst, kannst du dir aussuchen. Speichern kannst du z.B. in eine json-Datei, in eine ini-Datei, in eine MySQL-Datenbank, in eine SQLite-Datenbank,... Als Anfänger würde ich dir ini raten, z.B. mit dem dini-Include von DracoBlue.
Nun ein wirklicher Anfänger bin ich nicht mehr,
nur ich mache es halt zum ersten mal das 3DTexte, Objecte halt, nach einem Server restart gespeichert werden,
daher hab ich hier gefragt wie man dies Hin bekommen, aber du hast mir nur die Möglichkeiten hin geschrieben was mir nicht wirklich viel bringen tut, da ich mich ja nicht damit auskennen tue
währe nett wenn du es mir ein wenig erklären könntest oder ein Tutorial findest ( habe schon die SuFu genutzt aber nichts gefunden )
Grüße
Abend
Ich hab mal eine Frage, und zwar möchte ich mal gerne wissen wie man einen 3DTextSpeichern lässt,
Den ich habe ein Biz-System, wo es ein Befehl gibt der sich '/buybiz' nennt. Und so bald man diesen eingibt an einer bestimmten Position
wird ein 3DText Geupdated wo dann anschliesend Informationen zum Biz stehen 'Name & Kassenstand'.
Also meine Frage ist, wie stelle ich das an, Das der Geupdatede 3DText nach einem 'Server Restart' geladen wird.
Hier mal mein Befehl:
ocmd:buybiz(playerid,params[])
{
if(!IsPlayerInRangeOfPoint(playerid,4.0,1481.1240,-1808.8945,18.7929))return SendClientMessage(playerid,GRUN,"Du bist an keinem Buisness!");
{
if(GetPVarInt(playerid,"Geld") >= 50000)
{
format(StadthallenText,sizeof(StadthallenText),"=> Stadthalle <=\nBesitzer: %s\nKassenstand: %d",SpielerName(playerid),StadthallenKasse);
//Create3DTextLabel(StadthallenText,BLAU,1481.1240,-1808.8945,18.7929,40.0,0,0);
Update3DTextLabelText(Biz1, WEIS, StadthallenText);
DestroyPickup(VerkaufStadthallePickup);
SetPVarInt(playerid,"BizBesitzer",1);
SendClientMessage(playerid,GRUN,"Herzlichen Glückwunsch! zu deinen neuen Biz.");
SpielerSpeichern(playerid);
}
else
{
SendClientMessage(playerid, GELB,"Nicht genug Geld, du benötigst: 50.000€");
}
}
return 1;
}
Ich hoffe ihr könnt mir weiter helfen
Grüße
mach aus:
if(CopCarInfo[i][ZiviCar] == 1)
ein
if(CopCarInfo[i][ZiviCar] != 1)
bin mir aber nicht sicher
Grüße
Ich weiß bei dir Funktioniert es zwar schon aber ich muss es dir mal Verbessern sieht ja nit schön aus wie du das da hine geklatscht hast :o ( nicht böss gemeint ;D )
ocmd:stats(playerid)
{
new string[50],string2[128],pname[MAX_PLAYER_NAME];
new player = GetPlayerScore(playerid);
new Float:kdrate = float(Spieler[playerid][Kills]/Spieler[playerid][Deaths]);
GetPlayerName(playerid,pname,sizeof(pname));
{
format(string,sizeof(string),"[___Stats von %s___]",pname);
format(string2,sizeof(string2),"Name: %s\nLevel: %d\nGeld: %d\nSkin ID: %d\nKills: %d\nDeaths: %d\nK/D Rate: %.2f",pname,GetPlayerScore(playerid),GetPlayerMoney(playerid),player,Spieler[playerid][Kills],Spieler[playerid][Deaths],kdrate);
SendClientMessage(playerid,HELLGRUEN,string);
SendClientMessage(playerid,Weiss,string2);
}
return 1;
}
Grüße
Alles anzeigenC:\Users\Niklas\Desktop\Scripten\gamemodes\Fodero.pwn(639) : error 017: undefined symbol "Spieler"
C:\Users\Niklas\Desktop\Scripten\gamemodes\Fodero.pwn(639) : warning 215: expression has no effect
C:\Users\Niklas\Desktop\Scripten\gamemodes\Fodero.pwn(639) : error 001: expected token: ";", but found "]"
C:\Users\Niklas\Desktop\Scripten\gamemodes\Fodero.pwn(639) : error 029: invalid expression, assumed zero
C:\Users\Niklas\Desktop\Scripten\gamemodes\Fodero.pwn(639) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
4 Errors.
Es geht nicht
Versuch es so:
if(GetPVarInt(playerid,"Adminlevel") < GetPVarInt(pID,"Adminlevel") return SendClientMessage(playerid,DEIN_FARBCODE,"Du kannst diesen Spieler nicht kicken, da er ein ranghöherer Administrator ist!");
Also falls ihr das bei SAMP meint das die Objecte etwas langsamer geladen werden.
Packt das unter OnGameModeInit rein:
Streamer_VisibleItems(STREAMER_TYPE_OBJECT,1000);
mir hat es geholfen!
Grüße
Also hab es nun so drin wie du es mir geschrieben hast Jeffry aber kriege nun diese Errors:
So drin:
Feuergate1auf = CreateDynamicObject(11313,1743.7300000,-1112.3900000,24.8300000,0.0000000,0.0000000,-90.0000000);
SetDynamicObjectMaterial(Feuergate1auf, Feuerwehrtore); //error Zeile
Error Zeilen
C:\Users\Equu\Desktop\ProjektSelfmade - Stand 19.07.2013\gamemodes\ProjektScript.pwn(4527) : error 029: invalid expression, assumed zero
C:\Users\Equu\Desktop\ProjektSelfmade - Stand 19.07.2013\gamemodes\ProjektScript.pwn(4527) : warning 215: expression has no effect
C:\Users\Equu\Desktop\ProjektSelfmade - Stand 19.07.2013\gamemodes\ProjektScript.pwn(4527) : warning 215: expression has no effect
C:\Users\Equu\Desktop\ProjektSelfmade - Stand 19.07.2013\gamemodes\ProjektScript.pwn(4527) : warning 215: expression has no effect
C:\Users\Equu\Desktop\ProjektSelfmade - Stand 19.07.2013\gamemodes\ProjektScript.pwn(4527) : warning 215: expression has no effect
C:\Users\Equu\Desktop\ProjektSelfmade - Stand 19.07.2013\gamemodes\ProjektScript.pwn(4527) : warning 215: expression has no effect
C:\Users\Equu\Desktop\ProjektSelfmade - Stand 19.07.2013\gamemodes\ProjektScript.pwn(4527) : error 001: expected token: ";", but found ")"
C:\Users\Equu\Desktop\ProjektSelfmade - Stand 19.07.2013\gamemodes\ProjektScript.pwn(4527) : error 029: invalid expression, assumed zero
C:\Users\Equu\Desktop\ProjektSelfmade - Stand 19.07.2013\gamemodes\ProjektScript.pwn(4527) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
4 Errors.
Abend
Ich habe ein kleines Problem mit meinem /auf Befehl,
und zwar habe ich von meinem Kollegen eine Base bekommen wo ich die Tore zum Bewegen bringen soll also mit /auf geht es auf und mit /zu halt zu
nun, Ich habe dieses objekt wie jedes andere bei OnGameModeInit drin stehen damit es direkt beim Server Start halt da ist, nur das Problem ist wenn ich am objekt bin und /auf mache lässt es sich nicht bewegen,
liegt dies vielleicht eventuell am SetDynamicObjectMaterial ?
Meine Codes:
Ganz Oben:
#define Feuerwehrtore ,0,10932,"station_sfse","ws_trainstationwin1",0xFF6B6963[/b]
[b]new Feuergate1auf;[/b]
Command:
ocmd:auf(playerid,params[])
{
// Feuerwehr Gate 1 Open
if(IsPlayerInRangeOfPoint(playerid,6.0,1743.7300000,-1112.3900000,24.8300000))
MoveDynamicObject(Feuergate1auf,1743.7300000,-1112.3900000,24.8300000-10,8.0,0.0000000,0.0000000,-90.0000000);
return 1;
}
OnGameModeInit:
Feuergate1auf = SetDynamicObjectMaterial(CreateDynamicObject(11313,1743.7300000,-1112.3900000,24.8300000,0.0000000,0.0000000,-90.0000000)Feuerwehrtore); //tor1..zu
Grüße
Kopier dir mal alles raus, die Zeile/n die noch da sind da rückst es ein, bei der obersten 2 mal. Dann fügst es ein.So hat es bei mir mal geklappt
Hat sich schon Erledigt
ZitatMit der Tab Taste?
Nein mit der Tab Taste wird das nicht funktionieren da die Code Zeilen 1 Weiter schon sind,
Also Frag ich mich halt gibt es auch eine art Funktion womit man die ganzen Zeilen dort an der Wand also Ganz nach Links machen kann und dann halt mit der Tab Taste arbeiten kann ?
Grüße
nein, mir ist keine andere möglichkeit bekannt, haste das kopiert oder was?
Ja sind halt Objecte.. daher Copy&Paste
Moin
Ich hab mal eine Frage,
und zwar sind bei mir einige Tausend Zeilen verschoben, und wollte jetzt mal fragen gibt es auch eine Methode das man diese direkt richtig einrücken kann ?
weil ich hab keine lust Tausende von Zeilen selbst einzurücken da sitze ich noch morgen dran..
Grüße
Alles anzeigenJa tut mir leid ... Hab ich anscheinend nicht richtig aufgenommen... Aber ich hab noch ein Problem... Jetzt geht der CP nicht mehr weg
Muss ich da irgendwas noch ändern.
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid==Dialog_Geschichte)
{
if(response==1)
{
ShowPlayerDialog(playerid,Dialog_Stadthalle,DIALOG_STYLE_MSGBOX,"Personalien","Um in der Stadt bleiben zu können, und um dich auszuweisen\nbrauchst du einen Personalausweis.\n Fahre zur Stadthalle und besorge dir dort einen.\nDamit es schneller geht kannst du dir vor dem Haus\nein Fahrrad mieten.","OK","Abbrechen");
}
if(response==0)
{
SendClientMessage(playerid,Rot,"Du hast die Aufgabe abgebrochen.\n Versuche es bitte noch einmal.");
}
}
if(dialogid==Dialog_Stadthalle)
{
if(response==1)
{
SetPlayerCheckpoint(playerid,1481.4243,-1738.6479,13.5469,1);
SendClientMessage(playerid,Gelb,"Fahre zur Stadthalle");
}
if(response==0)
{
SendClientMessage(playerid,Rot,"Du hast die Aufgabe abgebrochen.\n Bitte versuche es noch einmal.");
}
}
return 1;
}
Du musst das so machen:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid==Dialog_Geschichte)
{
if(response==1)
{
ShowPlayerDialog(playerid,Dialog_Stadthalle,DIALOG_STYLE_MSGBOX,"Personalien","Um in der Stadt bleiben zu können, und um dich auszuweisen\nbrauchst du einen Personalausweis.\n Fahre zur Stadthalle und besorge dir dort einen.\nDamit es schneller geht kannst du dir vor dem Haus\nein Fahrrad mieten.","OK","Abbrechen");
}
if(response==0)
{
SendClientMessage(playerid,Rot,"Du hast die Aufgabe abgebrochen.\n Versuche es bitte noch einmal.");
}
}
if(dialogid==Dialog_Stadthalle)
{
if(response==1)
{
SetPlayerCheckpoint(playerid,1481.4243,-1738.6479,13.5469,1);
SendClientMessage(playerid,Gelb,"Fahre zur Stadthalle"); Geschichte[playerid] = 1;
}
if(response==0)
{
SendClientMessage(playerid,Rot,"Du hast die Aufgabe abgebrochen.\n Bitte versuche es noch einmal.");
}
}
return 1;
}
EDIT: irgend wie spackt der Editor hier.. du musst *Geschichte[playerid] = 1;* unter *SendClientMessage(playerid,Gelb,"Fahre zur Stadthalle");* packen dann müsste es funktionieren
Einfach bei den public OnPlayerEnterCheckpoint
DisablePlayerCheckpoint(playerid); ein machen fertig
Alles anzeigenDu musst das mit format machen
ocmd:aduty(playerid, params[])
{
if(GetPVarInt(playerid,"Tutorial") != 0)return SendClientMessage(playerid,GRAU,"Du kannst keine Befehle nutzen,da du im Tutorial bist.");
if(GetPVarInt(playerid,"loggedin") == 0)return SendClientMessage(playerid,GRAU,"Du bist nicht eingeloggt!");
if(!DarfSpielerEinLeaderMachen(playerid))return SendClientMessage(playerid,ROT,"Dein Adminlevel ist zu niedrig");
new string[128];
switch(GetPVarInt(playerid,"Adminlevel"))
{
case 0:{ format(string, sizeof string, "User");}
case 1:{format(string, sizeof string, "Supporter");}
case 2:{format(string, sizeof string, "Admin");}
case 3:{format(string, sizeof string, "Headadmin");}
case 4:{format(string, sizeof string, "Communityleiter");}
case 5:{format(string, sizeof string, "Manager");}
case 6:{format(string, sizeof string, "Designer");}
case 7:{format(string, sizeof string, "Sponsor");}
case 8:{format(string, sizeof string, "Premium User");}
}
format(string,sizeof(string),"* %s | %s meldet sich 'OnDuty' du kannst ihn mit, /report erreichen!",string,SpielerName(playerid));
SendClientMessageToAll(GRUN,string);
return 1;
}
Sinnlos?
so wie ich es da hab muss es funktionieren ..
Bin mir nicht sicher, mach mal aus adminrank = Adminlevel
was soll das bewirken o.O?
Ich verstehe es einfach nicht hier mal mein anderer Befehl der fabelhaft funktionieren tut!
warum funktioniert dieser Hier aber mein anderer Befehl '/aduty' nicht ?
ocmd:duty(playerid, params[])
{
if(!IsPlayerInRangeOfPoint(playerid,2.0,215.3031,113.7856,1003.2188))return SendClientMessage(playerid,ORANGE,"Du befindest dich an keinem /duty Punkt");
if(GetPVarInt(playerid,"Tutorial") != 0)return SendClientMessage(playerid,GRAU,"Du kannst keine Befehle nutzen,da du im Tutorial bist.");
if(GetPVarInt(playerid,"loggedin") == 0)return SendClientMessage(playerid,GRAU,"Du bist nicht eingeloggt!");
new spielerrank[64], string[128];
if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,ORANGE,"Du bist nicht in der Fraktion");
switch(GetPVarInt(playerid,"Rank"))
{
case 0:{spielerrank="Praktikant";}
case 1:{spielerrank="Trainee";}
case 2:{spielerrank="Deputy Officer";}
case 3:{spielerrank="Senior Deputy Officer";}
case 4:{spielerrank="Sergeant";}
case 5:{spielerrank="FBI Agent";}
case 6:{spielerrank="FBI Special Agent";}
case 7:{spielerrank="S.W.A.T Officer";}
case 8:{spielerrank="S.W.A.T Captain";}
case 9:{spielerrank="Sheriff";}
case 10:{spielerrank="Chief";}
}
format(string,sizeof(string),"* %s | %s ist nun im Dienst",spielerrank,SpielerName(playerid));
for(new i=0; i<GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
if(isPlayerInFrakt(i,GetPVarInt(playerid,"Fraktion")))
{
SendClientMessage(i,GRUN,string);
}
}
}
return 1;
}