Ich kann dir den Code gerade nicht schicken weil ich am Handy bin, aber wenn du pickupid entfernt hast dann kannst du es logischerweise auch nicht mehr verwenden.
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Kleines Problem, sobald ich durch den Checkpoint fahre passiert nix.
Der bricht bei der ersten Abfrage direkt ab. (Über dem DEBUG 1 die abfrage)
fc_id steht für die FraktionsID die ist im Enum und in der Variable fcInfo festgelegt.
if(IsPlayerInRangeOfPoint(playerid,range,2219.5276,-2228.8760,13.5469))
{
for(new i=0; i<sizeof(fcInfo); i++)
{
if(fcInfo[i][id_x] !=mID)return SCM(playerid,COLOR_GRAU,"Fahre mit ein Fahrzeug deiner Fraktion zum Checkpoint.");
printf("DEBUG 1: Vehicle: %d | fcInfo[%i][fc_id] !=vID[%i]",vID,i,vID);
if(fcInfo[i][fc_id] !=5)return SCM(playerid,COLOR_GRAU,"Fahre mit ein Fahrzeug deiner Fraktion zum Checkpoint.");
printf("DEBUG 2: Vehicle: %d | vID[%i] != fcInfo[%i][fc_id]",vID,vID,i);
new string[128];
format(string,128,"Produkte kaufen");
ShowPlayerDialog(playerid,DIALOG_BUYPRODS,DIALOG_STYLE_LIST,"Produkte",string,"Wählen","Abbrechen");
print("ENDE");
DisablePlayerCheckpoint(playerid);
}
return 1;
} -
Durch die returns bewirkst du, dass bei der ersten nicht Übereinstimmung gleich beendet wird. Schreibe es so:
if(IsPlayerInRangeOfPoint(playerid,range,2219.5276,-2228.8760,13.5469))
{
for(new i=0; i<sizeof(fcInfo); i++)
{
printf("DEBUG 1: Vehicle: %d | fcInfo[%i][fc_id] !=vID[%i]",vID,i,vID);
if(fcInfo[i][id_x] !=mID) continue;
printf("DEBUG 2: Vehicle: %d | vID[%i] != fcInfo[%i][fc_id]",vID,vID,i);
if(fcInfo[i][fc_id] !=5) continue;
new string[128];
format(string,128,"Produkte kaufen");
ShowPlayerDialog(playerid,DIALOG_BUYPRODS,DIALOG_STYLE_LIST,"Produkte",string,"Wählen","Abbrechen");
print("ENDE");
DisablePlayerCheckpoint(playerid);
return 1;
}
return SCM(playerid,COLOR_GRAU,"Fahre mit ein Fahrzeug deiner Fraktion zum Checkpoint.");;
}Übrigens, Debug Meldungen setzt man vor die Abfrage, sonst weißt du ja nicht was die Werte sind, die geprüft werden.

-
format(str2,sizeof(str2)
Wenn ich mich nicht täusche. -
-
Warum errors:
if(newkeys & 16)
{
for(new h = 0; h < sizeof(AutomatikPortInfo); h++){
if(pickupid == AutomatikPortInfo[h][APAusgangPickup] && PortedTimer[playerid] == 0 && GetPlayerVirtualWorld(playerid) == AutomatikPortInfo[h][APVirtualWorld]){
SetPlayerInterior(playerid, 0); SetPlayerPos(playerid, AutomatikPortInfo[h][APEingangX], AutomatikPortInfo[h][APEingangY], AutomatikPortInfo[h][APEingangZ]);
SetPlayerVirtualWorld(playerid, 0); PortedTimer[playerid] = 5; PlayerInfo[playerid][pLocal] = -1;
return 1;
}
if(pickupid == AutomatikPortInfo[h][APEingangPickup] && PortedTimer[playerid] == 0){
SetPlayerInterior(playerid, AutomatikPortInfo[h][APInterior]);
SetPlayerPos(playerid, AutomatikPortInfo[h][APAusgangX], AutomatikPortInfo[h][APAusgangY], AutomatikPortInfo[h][APAusgangZ]); SetPlayerVirtualWorld(playerid, AutomatikPortInfo[h][APVirtualWorld]); PortedTimer[playerid] = 5; PlayerInfo[playerid][pLocal] = AutomatikPortInfo[h][APLocation];
return 1;
}}error 017: undefined symbol "pickupid"
-
Weil du "pickupid" in OnPlayerKeyStateChange nicht verwenden kannst.
Wenn du abfragen willst, ob der Spieler im Pickup ist, dann musst du das mit IsPlayerInRangeOfPoint machen.Pascal.:
Debugge es so:
if(IsPlayerInRangeOfPoint(playerid,range,2219.5276,-2228.8760,13.5469))
{
for(new i=0; i<sizeof(fcInfo); i++)
{
printf("DEBUG 1: mID: %d | i: %d | id_x: %d",mID,i,cInfo[i][id_x]);
if(fcInfo[i][id_x] != mID) continue;
printf("fc_id: %d",fcInfo[i][fc_id]);
if(fcInfo[i][fc_id] !=5) continue;
new string[128];
format(string,128,"Produkte kaufen");
ShowPlayerDialog(playerid,DIALOG_BUYPRODS,DIALOG_STYLE_LIST,"Produkte",string,"Wählen","Abbrechen");
print("ENDE");
DisablePlayerCheckpoint(playerid);
return 1;
}
return SCM(playerid,COLOR_GRAU,"Fahre mit ein Fahrzeug deiner Fraktion zum Checkpoint.");;
}
Was steht im Log? -
Server log ist etwas groß.
Code
Alles anzeigen[19:29:56] DEBUG 1: mID: 482 | i: 0 | id_x: 239 [19:29:56] DEBUG 1: mID: 482 | i: 1 | id_x: 240 [19:29:56] DEBUG 1: mID: 482 | i: 2 | id_x: 241 [19:29:56] DEBUG 1: mID: 482 | i: 3 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 4 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 5 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 6 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 7 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 8 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 9 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 10 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 11 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 12 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 13 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 14 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 15 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 16 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 17 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 18 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 19 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 20 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 21 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 22 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 23 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 24 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 25 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 26 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 27 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 28 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 29 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 30 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 31 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 32 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 33 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 34 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 35 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 36 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 37 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 38 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 39 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 40 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 41 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 42 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 43 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 44 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 45 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 46 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 47 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 48 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 49 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 50 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 51 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 52 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 53 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 54 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 55 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 56 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 57 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 58 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 59 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 60 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 61 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 62 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 63 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 64 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 65 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 66 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 67 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 68 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 69 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 70 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 71 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 72 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 73 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 74 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 75 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 76 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 77 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 78 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 79 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 80 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 81 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 82 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 83 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 84 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 85 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 86 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 87 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 88 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 89 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 90 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 91 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 92 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 93 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 94 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 95 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 96 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 97 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 98 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 99 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 100 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 101 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 102 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 103 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 104 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 105 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 106 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 107 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 108 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 109 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 110 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 111 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 112 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 113 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 114 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 115 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 116 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 117 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 118 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 119 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 120 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 121 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 122 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 123 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 124 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 125 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 126 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 127 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 128 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 129 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 130 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 131 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 132 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 133 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 134 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 135 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 136 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 137 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 138 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 139 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 140 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 141 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 142 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 143 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 144 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 145 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 146 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 147 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 148 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 149 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 150 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 151 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 152 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 153 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 154 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 155 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 156 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 157 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 158 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 159 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 160 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 161 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 162 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 163 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 164 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 165 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 166 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 167 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 168 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 169 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 170 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 171 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 172 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 173 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 174 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 175 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 176 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 177 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 178 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 179 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 180 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 181 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 182 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 183 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 184 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 185 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 186 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 187 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 188 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 189 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 190 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 191 | id_x: 0 [19:29:56] DEBUG 1: mID: 482 | i: 192 | id_x: 0 -
Dafür gibt es die expander.

Schreibe es so:
if(IsPlayerInRangeOfPoint(playerid,range,2219.5276,-2228.8760,13.5469))
{
for(new i=0; i<sizeof(fcInfo); i++)
{
printf("DEBUG 1: vID: %d | i: %d | id_x: %d",vID,i,cInfo[i][id_x]);
if(fcInfo[i][id_x] != vID) continue;
printf("fc_id: %d",fcInfo[i][fc_id]);
if(fcInfo[i][fc_id] !=5) continue;
new string[128];
format(string,128,"Produkte kaufen");
ShowPlayerDialog(playerid,DIALOG_BUYPRODS,DIALOG_STYLE_LIST,"Produkte",string,"Wählen","Abbrechen");
print("ENDE");
DisablePlayerCheckpoint(playerid);
return 1;
}
return SCM(playerid,COLOR_GRAU,"Fahre mit ein Fahrzeug deiner Fraktion zum Checkpoint.");;
} -
Klappt vielen Dank

-
-
Wie bekomm ich das hin das er nur die Hälfte des kaufpreises bekommt ?
if(strcmp("/carsell", cmdtext, true, 10) == 0)
{
if(Dtc_PlayerHaveCar[playerid][Dtc_PlayerKey[playerid]])
{
GivePlayerMoneyEx(playerid, PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPreis]);
Dtc_Carlock[PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarId]] = 0;
Dtc_UnLockCar(PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarId]);
DestroyObject(sirene[PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarId]]);
sirenean[PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarId]] = false;
DestroyVehicle(PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarId]);
new string3[32];
new playername3[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername3, sizeof(playername3));
format(string3, sizeof(string3), "/Autos/%s%d.dtcar", playername3,Dtc_PlayerKey[playerid]);
fremove(string3);
Dtc_PlayerHaveCar[playerid][Dtc_PlayerKey[playerid]] = 0;
SendClientMessage(playerid, COLOR_YELLOW4, " Fahrzeug erfolgreich verkauft, Hälfte des Kaufpreises wird wurde dir wieder gegeben!");
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Du besitzt Kein Fahrzeug!");
return 1;
}
return 1;
}Ich habe das schon so probiert:
GivePlayerMoneyEx(playerid, PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPreis/2]);Jedoch bekomm ich da ein Warning.
"C:\Users\aimen\Desktop\Momento Roleplay - The Time Starts\gamemodes\MOR.pwn(37918) : warning 213: tag mismatch"Wie sollte ich das machen ?
-
GivePlayerMoneyEx(playerid, PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPreis]/2);
-
Ich hoffe, das mir einer Helfen kann, undzwar möchte ich es bei meinem Registrierungs-System so machen, das der Spieler bei jedem "Schritt der Registrierung" auf Abbrechen drücken kann, und gekickt wird. Bis jetzt habe ich das Problem, das ich nur beim "Geburtsdatum sowie vor der Passwort eingabe" auf Abbrechen drücken kann. Wenn ich beim Geburtsdatum auf Abbrechen drücke, werde ich zwar gekickt, aber leider wird der Spieler trotzdem in die Datenbank eingetragen, aber mit allen Werten auf 0.
Und beim Geschlecht besteht die möglichkeit des Abbrechens noch nicht, dies werde ich aber selber erlededigen können, werde dort ein "DIALOG_STYLE_LIST" verwenden.
Hier mal mein bisheriger Code:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case Dialog_Register:
{
if(!response)
{
SendClientMessage(playerid,0xFF0000FF,"Die Registrierung wurde Ab.-oder Unterbrochen\nBitte beenden Sie das Spiel, indem Sie /q als Textnachricht in den Chat eingeben.");
SetTimerEx("KickPlayer",250,0,"i",playerid);
return 1;
}
if(!inputtext[0] || !(3 <= strlen(inputtext) <= 24))
{
ShowPlayerDialog(playerid,Dialog_Register,DIALOG_STYLE_PASSWORD,"{FFFFFF}SmR: {308EAD}Registrierung","{FFFFFF}Herzlich Willkommen auf San Miami Roleplay\n\nUnser System hat Ihre Spielerinformationen nicht in unserer Datenbank gefunden.\nUm einen Charakter auf unserem Server zu Erstellen\nbenötigen wir einige Informationen von Ihnen.\nBitte tragen Sie ein Sicheres Passwort in das untere Feld ein.\n\nMerken Sie sich Ihr Passwort Gut.","Annehmen","Abbrechen");
return 1;
}
new query[950 + MAX_PLAYER_NAME],Tag,Monat,Jahr,Stunde,Minute,Sekunde,;
mysql_escape_string(inputtext,passwort,DBHandle)
getdate(Tag,Monat,Jahr);
gettime(Stunde,Minute,Sekunde);
format(query,sizeof(query),"%02d.%02d.%d - %02d:%02d:%d",Tag,Monat,Jahr,Stunde,Minute,Sekunde);
mysql_format(DBHandle, query, sizeof(query),"INSERT INTO `Accounts` (`pName`, `pPasswort`, `pAlter`, `pGeburtsdatum`, `pGeschlecht`, `pAdminlevel`, `pBanned`, `pBargeld`, `pKontoguthaben`, `pLastLogin`, `pRegDatum`, `pWarns`, `pLeben`) VALUES ('%e','%e','%d','%e','%d','%d','%d','0','0','%s','%s','%d','100.0')",
Spieler[playerid][pName],inputtext,Spieler[playerid][pAlter],Spieler[playerid][pGeburtsdatum],Spieler[playerid][pGeschlecht],Spieler[playerid][pAdminlevel],Spieler[playerid][pBanned],Spieler[playerid][pBargeld],Spieler[playerid][pKontoguthaben],query,query,Spieler[playerid][pWarns],Spieler[playerid][pLeben]);
mysql_tquery(DBHandle, query, "", "");
ShowPlayerDialog(playerid,Dialog_Geburtsdatum,DIALOG_STYLE_INPUT,"{FFFFFF}SmR: {308EAD}Geburtsdatum","{E5E5E5}Nun möchten wir wissen, wann Sie Geboren wurden. Tragen Sie Bitte Ihr Geburtsdatum in das untere Feld ein. Halten Sie sich Bitte an die Vorlage!\n\nAngabe bitte in TT.MM.JJJJ - {23A7F5}Beispiel: {E5E5E5}10.09.1994","Weiter","Verlassen");
return 1;
}
case Dialog_Geburtsdatum:
{
if(response == 0)return Kick(playerid);
else
{
Spieler[playerid][pAlter] = GetAge(inputtext);
if(Spieler[playerid][pAlter] == 0)
{
ShowPlayerDialog(playerid,Dialog_Geburtsdatum,DIALOG_STYLE_INPUT,"{FFFFFF}SmR: {308EAD}Geburtsdatum","{E5E5E5}Nun möchten wir wissen, wann Sie Geboren wurden. Tragen Sie Bitte Ihr Geburtsdatum in das untere Feld ein. Halten Sie sich Bitte an die Vorlage!\n\nAngabe bitte in TT.MM.JJJJ - {23A7F5}Beispiel: {E5E5E5}10.09.1994","Weiter","Verlassen");
return 1;
}
format(Spieler[playerid][pGeburtsdatum],20,inputtext);
if(Spieler[playerid][pAlter] == 0)
{
ShowPlayerDialog(playerid,Dialog_Geburtsdatum,DIALOG_STYLE_INPUT,"{FFFFFF}SmR: {308EAD}Geburtsdatum","{E5E5E5}Nun möchten wir wissen, wann Sie Geboren wurden. Tragen Sie Bitte Ihr Geburtsdatum in das untere Feld ein. Halten Sie sich Bitte an die Vorlage!\n\nAngabe bitte in TT.MM.JJJJ - {23A7F5}Beispiel: {E5E5E5}10.09.1994","Weiter","Verlassen");
return 1;
}
Spieler[playerid][pLogged] = false;
ShowPlayerDialog(playerid,Dialog_Geschlecht,DIALOG_STYLE_MSGBOX,"{FFFFFF}SmR: {308EAD}Geschlecht","{FFFFFF}Als letztes möchten wir Ihr Geschlecht wissen, Wählen Sie für die Angabe bitte Ihr Geschlecht welches unten zutrifft.","Männlich","Weiblich");
return 1;
}
}
case Dialog_Geschlecht:
{
new string[128];
if(response == 0)
{
format(string,sizeof(string),"{23A7F5}%s, {E5E5E5}Sie sind also Weiblich, und {23A7F5}%i {E5E5E5}Jahre alt.",Spielername(playerid),AgeOfPlayer(playerid));
SendClientMessage(playerid,0x00D2D2FF,string);
Spieler[playerid][pGeschlecht] = 2;
Spieler[playerid][pLogged] = true;
SavePlayerData(playerid);
SpawnPlayer(playerid);
return 1;
}
if(response == 1)
{
format(string,sizeof(string),"{23A7F5}%s, {E5E5E5}Sie sind also Männlich, und {23A7F5}%i {E5E5E5}Jahre alt.",Spielername(playerid),AgeOfPlayer(playerid));
SendClientMessage(playerid,0x00D2D2FF,string);
Spieler[playerid][pGeschlecht] = 1;
Spieler[playerid][pLogged] = true;
SavePlayerData(playerid);
SpawnPlayer(playerid);
return 1;
}
return 1;
}
case Dialog_Login:
{
if(!response)
{
SendClientMessage(playerid,0xFF0000FF,"Dieser Vorgang wurde Ab.-oder Unterbrochen\nBitte beenden Sie das Spiel, indem Sie /q als Textnachricht in den Chat eingeben.");
SetTimerEx("KickPlayer",250,0,"i",playerid);
return 1;
}
if(!inputtext[0] || !(3 <= strlen(inputtext) <= 25))
{
ShowPlayerDialog(playerid,Dialog_Login,DIALOG_STYLE_INPUT,"{FFFFFF}SmR: {308EAD}Einloggen","{0xA70000FF}Das Passwort darf nur 3-25 Zeichen enthalten!{FFFFFF}\n\nSie müssen von unserem System {0xFFFFFF}Identifiziert{FFFFFF} werden.\nGeben Sie dafür bitte Ihr richtiges Passwort unten in das Feld ein.\n\nKlicken Sie danach auf Einloggen, damit die Daten kontrolliert werden können.","Einloggen","Abbrechen");
return 1;
}
new query[180 + MAX_PLAYER_NAME];
mysql_format(DBHandle, query,sizeof(query),"SELECT COUNT(*) AS `count` FROM `Accounts` WHERE `pName` ='%e' AND `pPasswort` ='%e'",Spieler[playerid][pName],inputtext);
mysql_function_query(DBHandle, query, true,"LoadPlayerDataSequence","dd",playerid,2);
Spieler[playerid][pLogged] = true;
return 1;
}
}
return 1;
} -
Du musst das Passwort in eine Spielervariable speichern und das query von MySQL machst du beim Passwort Dialog raus und fügst es beim letzten Dialog ein, inputtext ersetzt du in den format Parametern dann mit der Spielervariable.
-
Jeffry:
Och mensch
Wegen sowas blödem ..Naja danke dir

Hab aber noch was gefunden was buggt ..
Function OnPlayerBuyCar(playerid,Model,Preis,Autohaus)//CARSYS
{
if(IsPlayerConnected(playerid) && !Dtc_PlayerHaveCar[playerid][Dtc_PlayerKey[playerid]])
{
GivePlayerMoneyEx(playerid,-Preis);
//CallRemoteFunction("GivePlayerMoneyEx","id",playerid,-Preis);
if(Autohaus == 0)
{
AddToBizzTill(0,Preis/2);
}
else if(Autohaus == 2)
{
AddToBizzTill(0,Preis);
}
else if(Autohaus == 3)
{
AddToBizzTill(0,Preis/2);
}
else if(Autohaus == 4)
{
AddToBizzTill(0,Preis/10);
}
SendClientMessage(playerid, COLOR_LIGHTBLUE, "*Du hast dir ein Auto gekauft.");
SendClientMessage(playerid, COLOR_LIGHTBLUE, "*Gehe zu der KFZ Stelle und hole dir ein Kennzeichen.");
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Fahre vorsichtig..Und denk an die StraßenVerkehrsOrdnung!");
SetParkPlatz(playerid,Autohaus);
new name[MAX_PLAYER_NAME], str[128];
GetPlayerName(playerid, name, sizeof name);
format(str, sizeof str, "/Autos/%s%d.dtcar", name,Dtc_PlayerKey[playerid]);
new File: hFile = fopen(str, io_write);
if (hFile)
{
new var[32];
format(var, 32, "CarId=0\n");fwrite(hFile, var);
format(var, 32, "CarModel=%d\n",Model);fwrite(hFile, var);
format(var, 32, "CarPos_x=%.3f\n",PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_x]);fwrite(hFile, var);
format(var, 32, "CarPos_y=%.3f\n",PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_y]);fwrite(hFile, var);
format(var, 32, "CarPos_z=%.3f\n",PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_z]);fwrite(hFile, var);
format(var, 32, "CarRotate=%.3f\n",PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarRotate]);fwrite(hFile, var);
format(var, 32, "CarNitro=0\n");fwrite(hFile, var);
format(var, 32, "CarHyd=0\n");fwrite(hFile, var);
format(var, 32, "CarWheel=0\n");fwrite(hFile, var);
format(var, 32, "CarAusp=0\n");fwrite(hFile, var);
format(var, 32, "CarSideL=0\n");fwrite(hFile, var);
format(var, 32, "CarSideR=0\n");fwrite(hFile, var);
format(var, 32, "CarFB=0\n");fwrite(hFile, var);
format(var, 32, "CarRB=0\n");fwrite(hFile, var);
format(var, 32, "CarSpoiler=0\n");fwrite(hFile, var);
format(var, 32, "CarRoof=0\n");fwrite(hFile, var);
format(var, 32, "CarHood=0\n");fwrite(hFile, var);
format(var, 32, "CarVents=0\n");fwrite(hFile, var);
format(var, 32, "CarLamps=0\n");fwrite(hFile, var);
format(var, 32, "CarPJ=-1\n");fwrite(hFile, var);
format(var, 32, "CarC1=-1\n");fwrite(hFile, var);
format(var, 32, "CarC2=-1\n");fwrite(hFile, var);
format(var, 32, "Preis=%d\n",Preis);fwrite(hFile, var);
format(var, 32, "Plate=XXX\n");fwrite(hFile, var);
fclose(hFile);
}
OnPlayerCarLogin(playerid);
}
}Undzwar er verliert das Geld zwar, aber wenn er Relogg macht hat er das Geld wieder und das Auto auch noch.
Hab gedacht das es an dem CallRemoteFunction liegt und die Zeile darüber gemacht aber das bringt auch nix ..mfg
-
Poste bitte dein GivePlayerMoneyEx sowie dein SavePlayer.
-
public GivePlayerMoneyEx(playerid,money){
ACNewMoney[playerid] = GetPlayerMoney(playerid) + money;
stopAC[playerid] = 15;
return GivePlayerMoney(playerid,money);
}Ich weis nicht wo das SavePlayer ist

Entweder das ist mit OnplayerUpdate oder ich weis es nicht
-
Ohne das können wir nicht sehen, wo der Fehler ist. Suche den Code, der den Spieler speichert. Suche ggf nach GetPlayerMoney oder ACNewMoney.
Generell müsste das Problem aber überall auftreten, wo du dem Spieler Geld abziehst.
-
Das einzige was ich gefunden habe ist bei OnPlayerUpdate.
Also so schaut das bei OnPlayerUpdate aus
Function PlayerUpdate(playerid)
{
if(IsPlayerConnected(playerid))
{
if(gPlayerLogged[playerid])
{
new string3[64];
new playername3[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername3, sizeof(playername3));
format(string3, sizeof(string3), "/Accounts/%s.ini", playername3);
new File: hFile = fopen(string3, io_write);
if (hFile)
{
new var[32];
format(var, 32, "Key=%s\n", PlayerInfo[playerid][pKey]);fwrite(hFile, var);
PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
...
...
format(var, 32, "Respect=%d\n",PlayerInfo[playerid][pExp]);fwrite(hFile, var);
format(var, 32, "Money=%d\n",PlayerInfo[playerid][pCash]);fwrite(hFile, var);Ich glaube aber ich weis woran das liegen könnte.
Bei Function OnPlayerLogin(playerid,password[])
Sehen die Zeilen so aus:
PlayerInfo[playerid][pCash] = dini_Int(string2, "Money");Und da du meintest das es 2 Systeme sind, kann es sein das es da buggt.
Oder ? -
public GivePlayerMoneyEx(playerid,money)
{
ACNewMoney[playerid] = GetPlayerMoney(playerid) + money;
PlayerInfo[playerid][pCash] = ACNewMoney[playerid];
stopAC[playerid] = 15;
return GivePlayerMoney(playerid,money);
}
Dann sollte alles klappen. -