Kriege komischerweise folgendes raus:
Kann ich nicht verstehen, habe den Ordner offen, gecheckt ob alles dadrin ist und vorsichtshalber 2 mal neu das Tutorial durchgegangen. Woran kann das liegen?
//Edit:
Alles super, habs schon.
Kriege komischerweise folgendes raus:
Kann ich nicht verstehen, habe den Ordner offen, gecheckt ob alles dadrin ist und vorsichtshalber 2 mal neu das Tutorial durchgegangen. Woran kann das liegen?
//Edit:
Alles super, habs schon.
Irgendwie fangen auf einmal an auf dem Server bestimmte (wohlgemerkt: selbst eingefügte Teile im Skript) Maps einfach unsichtbar zu werden. So wird z.B. nur noch 15 % von dem eigentlichen Bank Interior angezeigt. Dieses Problem kam erst auf, als ich ein neues Jail ins Skript gefügt habe.
Ich denke also mal dass es an zu vielen(?) Objekten liegt. Ich benutze den Incognito Streamer (v. 2.8.2 - aktuellster laut Github). Was kann ich noch probieren? Andere Streamer ausprobieren?
Irgend jemand eine Idee, was ich dort machen kann? Ist ein ziemlich blödes Problem, kann kaum etwas testen deswegen.
Irgendwie fangen auf einmal an auf dem Server bestimmte (wohlgemerkt: selbst eingefügte Teile im Skript) Maps einfach unsichtbar zu werden. So wird z.B. nur noch 15 % von dem eigentlichen Bank Interior angezeigt. Dieses Problem kam erst auf, als ich ein neues Jail ins Skript gefügt habe.
Ich denke also mal dass es an zu vielen(?) Objekten liegt. Ich benutze den Incognito Streamer (v. 2.8.2 - aktuellster laut Github). Was kann ich noch probieren? Andere Streamer ausprobieren?
Du musst die Query auch formatieren. Kannst du uns die mal zeigen?
Man kann auch nicht direkt alles von Anfang an wissen. Dafür ist dieses Forum ja auch hier.
Vorher müsstest du allerdings oben am Script noch dieses eine Pickup genau definieren.
// oben im Script
new armourpickup;
// OnGameModeInit
armourpickup = AddStaticPickup(1239, 2, Float:X, Float:Y, Float: Z, 0);
// Du kannst es so wie Kristik es bereits erläutert hat in einem Befehl mit IsPlayerInRangeOfPoint verwenden, oder OnPlayerEnterPickup.
public OnPlayerPickUpPickup(playerid, pickupid)
{
if(pickupid == armourpickup)
{
// Vielleicht vorher noch abfragen, ob er in einer Gang ist (wäre zumindest in deinem Fall sinvoll)
// Was dann alles passieren soll (Armour auf 100 setzen, etc. wie es dir beliebt).
}
return 1;
}
Ich glaub du meinst Panic Room.
public OnPlayerCommandText(playerid, cmdtext[])
OnPlayerCommandText hat keine Params. Schau dir mal irgendwascmd an:
xcmd:test123(playerid,params[])
{
return 1;
}
Da hast du die Params. Sscanf kann also nicht wissen, was du mit params meinst, bei deinem Beispiel, weil du ja nur if(!strcmp(cmd, "/blitzer")) bei OnPlayerCommandText stehen hast.
neuste MySQL Plugin + Include?
Mach mal
if(!strcmp(lAction, "aufstellen", true))
zu
if(strcmp(lAction, "aufstellen", true))
Habe einen Befehl mit genau dem Prinzip, und ohne ! funktioniert es bei mir einwandfrei.
Irgendwie möchte mein 3DTextLabel nicht erstellt werden. Findet jemand den Fehler?
updateATM(id)
{
Delete3DTextLabel(atmInfo[id][a_text]); // Im Enum ist a_text als Text3D: ... deklariert.
new string[128];
format(string,sizeof(string),"ATM\nATM verbleidendes Geld: %i$\nATM momentaner Inhalt: %i$",atmInfo[id][a_inventory],atmInfo[id][a_savedmoney]);
atmInfo[id][a_text]=Create3DTextLabel(string,CLR_YELLOW,atmInfo[id][ax],atmInfo[id][ay],atmInfo[id][az],10,0,1);
printf("ID: %i X: %f Y: %f Z: %f",id,atmInfo[id][ax],atmInfo[id][ay],atmInfo[id][az]);
return 1;
}
sqlLoadATMs()
{
new query[256],num_fields,num_rows,count;
mysql_format(dbhandle,query,sizeof(query),"SELECT * FROM atms");
mysql_query(dbhandle,query);
cache_get_data(num_rows,num_fields,dbhandle);
if(!num_rows)return 1;
for(new i=0;i<num_rows;i++)
{
count++;
atmInfo[i][a_dbid]=cache_get_field_content_int(i,"id");
atmInfo[i][ax]=cache_get_field_content_float(i,"x");
atmInfo[i][ay]=cache_get_field_content_float(i,"y");
atmInfo[i][az]=cache_get_field_content_float(i,"z");
atmInfo[i][arx]=cache_get_field_content_float(i,"rx");
atmInfo[i][ary]=cache_get_field_content_float(i,"ry");
atmInfo[i][arz]=cache_get_field_content_float(i,"rz");
atmInfo[i][a_inventory]=cache_get_field_content_int(i,"inventory");
atmInfo[i][a_savedmoney]=cache_get_field_content_int(i,"savedmoney");
atmInfo[i][a_id]=CreateObject(2942,atmInfo[i][ax],atmInfo[i][ay],atmInfo[i][az],atmInfo[i][arx],atmInfo[i][ary],atmInfo[i][arz]);
updateATM(i);
}
printf("Es wurde(n) %i ATM(s) geladen.",count);
return 1;
}
Würde aller Code dadrunter ausgeführt werden?
Logisch wäre nein, weiß aber nicht ob return SendClientMessage einen ähnlichen Effekt hat wie return 1; (was auf jeden Fall die Schleife stoppen würde)
for(o=0;o<GetMaxPlayers();o++)
{
if(!IsPlayerConnected(o))continue;
if(playerlotto[o]<=0)return SendClientMessage(o,CLR_YELLOW,"Du hattest dir kein Lottoschein geholt.");
if(playerlotto[o]!=lottozahl)return SendClientMessage(o,CLR_YELLOW,"Du hast Leider nicht gewonnen! Nächstes mal jedoch bestimmt.");
//?
Wir wollen deinen /sellhouse, /hausverkaufen o. Ä. Befehl gerne sehen.
Lol, ziemlicher dummer Fehler. Naja, man lernt nie aus.
Vielen Dank für eure Hilfe.
Jeffry wird ausgenutzt? Naja. Er darf immerhin noch selbst entscheiden, ob er hilft oder nicht. Sehe ich zumindest so.
Klappt perfekt, danke Prototype.
Mache ich die Abspeicherung am besten mit PVars oder/und nem Array (oder sonst irgendwas).
//Edit:
Nvm, habs selbst. Das letzte Problem ist, dass obwohl alles übereinstimmt trotzdem "Vorgang abgebrochen." kommt.
(strval war nur ein Versuch, klappte auch ohne nicht.)
if(playertextid==PinCodeAccept[playerid])
{
printf("Ergebnis : %s",PinString);
strval(PinString);
printf("Ergebnis 2 : %i",PinString);
printf("Mein Pin : %i",pInfo[playerid][pBankkartenpin]);
if(strlen(PinString)!=pInfo[playerid][pBankkartenpin])
{
strdel(PinString,0,5);
deleteCharacter(playerid);
deleteCharacter(playerid);
deleteCharacter(playerid);
deleteCharacter(playerid);
PlayerTextDrawSetString(playerid,PinCodeX[playerid],PinCode[playerid]);
SendClientMessage(playerid,CLR_RED,"Vorgang abgebrochen.");
}
else
{
SendClientMessage(playerid,CLR_GREEN,"Erfolgreich.");
strdel(PinString,0,5);
deleteCharacter(playerid);
deleteCharacter(playerid);
deleteCharacter(playerid);
deleteCharacter(playerid);
PlayerTextDrawSetString(playerid,PinCodeX[playerid],PinCode[playerid]);
PlayerTextDrawHide(playerid,PinCodeEingabe[playerid]);
PlayerTextDrawHide(playerid,PinCode1[playerid]);
PlayerTextDrawHide(playerid,PinCode2[playerid]);
PlayerTextDrawHide(playerid,PinCode3[playerid]);
PlayerTextDrawHide(playerid,PinCode4[playerid]);
PlayerTextDrawHide(playerid,PinCode5[playerid]);
PlayerTextDrawHide(playerid,PinCode6[playerid]);
PlayerTextDrawHide(playerid,PinCode7[playerid]);
PlayerTextDrawHide(playerid,PinCode8[playerid]);
PlayerTextDrawHide(playerid,PinCode9[playerid]);
PlayerTextDrawHide(playerid,PinCodeX[playerid]);
PlayerTextDrawHide(playerid,PinCodeAccept[playerid]);
PlayerTextDrawHide(playerid,PinCodeBack[playerid]);
PlayerTextDrawHide(playerid,PinCodeCancel[playerid]);
CancelSelectTextDraw(playerid);
TogglePlayerControllable(playerid,1);
}
Danke schon einmal für die Hilfe!
Wofür steht bei new number das + 1?
Habe das jetzt mal auf 4 + 1 geändert, weil ich ja nur 4 '*' brauche.
Verwende ich deine Funtkion dann dementsprechend so (wobei ich noch nicht ganz bei den Parametern durchblicke)?
if(playertextid==PinCode1[playerid])
{
PlayerTextDrawSetString(playerid,PinCodeX[playerid],addCharacter(/*?*/));
}
Und bei bei meinem Löschen-Textdraw dann logischerweise mit deleteCharacter.
+ Kann ich das irgendwo besser lösen mit den Zahlen im Hintergrund speichern?
Dann könnte ich ja theoretisch (falls das möglich ist) in einem PVar mehrere (am besten 4) Zahlen speichern. Dann bräuchte ich einfach nur die letzte Zahl, die gedrückt wurde, zu speichern, oder muss ich dann bei jedem Zahlenfeld die entsprechende Zahl speichern (z.B. PinCode1 == SetPVarInt 1, PinCode2 == SetPVarInt 2 usw...)?
mfg.
Kann man strcmp mit switch benutzen?
Beispiel wo ichs versucht habe:
new pID, auswahl[12];
if(!isPlayerInFrakt(playerid,3))return SendClientMessage(playerid,CLR_RED,"Fehler: Du bist kein Fahrschullehrer.");
if(sscanf(params,"us",pID,auswahl))return SendClientMessage(playerid,CLR_RED,"Fehler: Benutzung: /givelic [playerid] [carlic/bikelic/planelic/weaponlic]");
switch(strcmp(auswahl))
{
case "carlic":
{
return 1;
}
}
Hallo Breadfish,
bin momentan an eine Art "Pin" System für die Bank am werkeln und stoße jetzt auf viele verschiedene Probleme.
Erstmal allerdings einen kleinen Codeausschnitt um zu verdeutlichen, was ich so denke:
if(playertextid==PinCode1[playerid]) //Geht von PinCode1 - PinCode9
{
if(pincodestufe[playerid]==0) // Das ist die Stufe, also quasi ob er (wie hier) beim ersten Zeichen ist oder vielleicht beim dritten (von vier).
{
new string[4];
pincodestufe[playerid]=1; // Da er jetzt eine Zahl angegeben hat, ist er auf Stufe 1.
format(string,sizeof(string),"%s",pincodecensor[playerid]); // Weiter unten
PlayerTextDrawSetString(playerid,PinCodeX[playerid],string);
SetPVarInt(playerid,"PINCODENUMBER1",1); // Die Nummer die er eingegeben hat muss ich ja auch irgendwie zwischenspeichern.
}
// Das hier ist pincodecensor
new pincodecensor[MAX_PLAYERS]="*";
// Wie ich z.b. die Zahl 1 erstelle
PinCode1[playerid] = CreatePlayerTextDraw(playerid,250.000000, 171.000000, "1");
PlayerTextDrawBackgroundColor(playerid,PinCode1[playerid], 255);
PlayerTextDrawFont(playerid,PinCode1[playerid], 1);
PlayerTextDrawLetterSize(playerid,PinCode1[playerid], 0.500000, 2.200000);
PlayerTextDrawColor(playerid,PinCode1[playerid], 16711935);
PlayerTextDrawSetOutline(playerid,PinCode1[playerid], 0);
PlayerTextDrawSetProportional(playerid,PinCode1[playerid], 1);
PlayerTextDrawSetShadow(playerid,PinCode1[playerid], 1);
PlayerTextDrawBoxColor(playerid,PinCode1[playerid], 255);
PlayerTextDrawTextSize(playerid,PinCode1[playerid], 262.000000, 8.000000);
PlayerTextDrawSetSelectable(playerid,PinCode1[playerid], 1);
PlayerTextDrawHide(playerid,PinCode1[playerid]);
Meine Probleme sind jetzt folgende: Wenn er ausversehen eine falsche Zahl gedrückt hat, habe ich natürlich einen Button erstellt, womit er das letzte Zeichen löschen kann. Wie kann ich sowas verwirklichen?
2tes Problem: Ich muss die 4 gedrückten Zahlen aneinanderreihen (er drückt 5 - 3 - 9 - 7 == 5397) und diese dann mit seinem Pin abgleichen (pInfo[playerid][pBankkartenpin]).
3tes Problem: Er erstellt kein * sobald auf ich auf eine Zahl drücke.
Über Vorschläge wäre ich extrem glücklich.
Sobald ich am Anfang aus dem Grove Street Interior rausgehe, fallen meine Grovecars durch die Welt und spawnen ein wenig weiter weg, als dort wo sie eigentlich stünden. Gibts da einen Tipp für?
Können auch im späteren Spielverlauf noch gefunden (und gefangen) werden.