Kann mir jemand anderes wegen meinem Problem helfen?
[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
-
-
Beitrag von Capture ()
Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Hat sich geklärt, muss "buf" ja auch wieder clearen, ich Idiot xD (). -
Hallo, welche Objekt-ID hat das ForSale Schild? Such mich grad dumm und dämlich ...
-
Hallo, welche Objekt-ID hat das ForSale Schild?
Das ist die ID 19470.
PS: Du kannst nächstes mal hier nachfragen, da passt es besser:
[SAMMELTHREAD] Suche ObjektID/Textur -
Das ist die ID 19470.
PS: Du kannst nächstes mal hier nachfragen, da passt es besser:
[SAMMELTHREAD] Suche ObjektID/TexturOk mach ich, Danke
-
Situation: Ich will mein Frakauto parken, kriege aber immer nur die Datenbank-ID 1 raus, obwohl ich mich in dem Auto befinde, welches die Datenkbank-ID 3 hat.
Hab mir mal nen kleinen Befehl geschrieben, um zu schauen ob es klappt.
ocmd:fparkinfo(playerid,params[])
{
for(new i=0;i<sizeof(fcInfo);i++)
{
if(!fcInfo[i][id_x])continue;
new string[64];
format(string,sizeof(string),"FDB_ID: %i",fcInfo[i][fdb_id]);
SendClientMessage(playerid,CLR_YELLOW,string);
//?
}
return 1;
}
Ich bin mir sicher, dass es daran liegt wo das ? ist. Ich weiß nämlich nicht, was ich dort hinmachen muss. Mache ich nichts hin, geht er alle 2 Frakautos durch und gibt mir die beiden IDs statt einem. Mache ich ein break, geht er wahrscheinlich immer nur das erste Auto durch, weswegen ich immer nur die ID1 kriege. Bei continue macht er es wie beim 1sten Fall. Bei return 1; geht er sowieso nur das erste Auto durch. Was muss also dahin? Ich bin ratlos... Ist bestimmt ganz einfach. -
Du musst prüfen, ob die ID in der Variable der entspricht, in der du sitzt:
ocmd:fparkinfo(playerid,params[])
{
new id = GetPlayerVehicleID(playerid);
for(new i=0;i<sizeof(fcInfo);i++)
{
if(fcInfo[i][id_x] != id)continue;
new string[64];
format(string,sizeof(string),"FDB_ID: %i",fcInfo[i][fdb_id]);
SendClientMessage(playerid,CLR_YELLOW,string);
//?
}
return 1;
} -
Ich habe ein Problem, bitte um Hilfe...
Ich habe ein Script, wenn ich den Starte, ist der Gamemode auf ''Uknown'' Was ist da das Problem?...
Log:
----------
Loaded log file: "server_log.txt".
----------SA-MP Dedicated Server
----------------------
v0.3.7-R2, (C)2005-2015 SA-MP Team[18:42:33]
[18:42:33] Server Plugins
[18:42:33] --------------
[18:42:33] Loaded 0 plugins.[18:42:33]
[18:42:33] Filterscripts
[18:42:33] ---------------
[18:42:33] Loading filterscript 'gl_actions.amx'...
[18:42:33] Unable to load filterscript 'gl_actions.amx'.
[18:42:33] Loading filterscript 'gl_realtime.amx'...
[18:42:33] Unable to load filterscript 'gl_realtime.amx'.
[18:42:33] Loading filterscript 'gl_property.amx'...
[18:42:33] Unable to load filterscript 'gl_property.amx'.
[18:42:33] Loading filterscript 'gl_mapicon.amx'...
[18:42:33] Unable to load filterscript 'gl_mapicon.amx'.
[18:42:33] Loading filterscript 'ls_elevator.amx'...
[18:42:33] Unable to load filterscript 'ls_elevator.amx'.
[18:42:33] Loading filterscript 'attachments.amx'...
[18:42:33] Unable to load filterscript 'attachments.amx'.
[18:42:33] Loading filterscript 'skinchanger.amx'...
[18:42:33] Unable to load filterscript 'skinchanger.amx'.
[18:42:33] Loading filterscript 'vspawner.amx'...
[18:42:33] Unable to load filterscript 'vspawner.amx'.
[18:42:33] Loading filterscript 'ls_mall.amx'...
[18:42:33] Unable to load filterscript 'ls_mall.amx'.
[18:42:33] Loading filterscript 'ls_beachside.amx'...
[18:42:33] Unable to load filterscript 'ls_beachside.amx'.
[18:42:33] Loaded 0 filterscripts.[18:42:33] Script[gamemodes/gr.amx]: Run time error 19: "File or function is not found"
[18:42:33] Number of vehicle models: 0 -
-
Gibt es eine möglichkeit einen Klick auf ein Objekt zu erkennen?
-
-
-
Hallo, ich möchte Spieler die PickUps aufheben bestimmte Waffen geben, aber wie frage ich ab welche Model ID aufgehoben wurde damit ich die entsprechende Waffe geben kann?
So werden die PickUps erstellt
new RandomWeaponsIDs[] =
{
346, 347, 348, 349, 350, 351, 352, 353, 355, 356, 357, 358, 365, 372, 341, 335
};stock DropWeapon(amount)
{
//Zwischenspeichern des RandomPos Arrays um darin zu arbeiten
new Float:tmp[sizeof(RandomPos)][3];
tmp = RandomPos;
//Werte deklarieren
new r,w,count = sizeof(RandomPos);
//Schleife für die Anzahl der Waffen die erstellt werden sollen
for(new i = 0; i < amount; i++)
{
//Zufallswerte generieren
r = random(count);
w = random(sizeof(RandomWeaponsIDs));
//Pickup an der gefundenen Position erstellen
eventweapon[i] = CreateDynamicPickup(RandomWeaponsIDs[w], 19, tmp[r][0], tmp[r][1], tmp[r][2]);
//Den gefundenen Ort aus dem tmp-Array entfernen, indem
//alle nachfolgenden Orte eins nach vorne gezogen werden (=keine doppelten Orte)
for(new j = r; j < count - 1; j++)
{
tmp[j][0] = tmp[j+1][0];
tmp[j][1] = tmp[j+1][1];
tmp[j][2] = tmp[j+1][2];
}
count--;
}
return 1;
}Und so werden sie aufgehoben
public OnPlayerPickUpPickup(playerid, pickupid)
{
for(new i = 0; i < MAX_PLAYERS; i++) {
if(eventweapon[i] == pickupid) {
//Wie mit GivePlayerWeapon abfragen welches Pickup Model aufgehoben wurde um die entsprechende Waffe zu geben?
DestroyPickup(eventweapon[i]);
eventweapon[i] = -1;return 1;
}
}
return 1;
} -
Das Array so:
new RandomWeaponsIDs[][2] =
{
{346, WEAPON_ID},
{347, WEAPON_ID},
{348, WEAPON_ID},
{349, WEAPON_ID},
{350, WEAPON_ID},
{351, WEAPON_ID},
{352, WEAPON_ID},
{353, WEAPON_ID},
{355, WEAPON_ID},
{356, WEAPON_ID},
{357, WEAPON_ID},
{358, WEAPON_ID},
{365, WEAPON_ID},
{372, WEAPON_ID},
{341, WEAPON_ID},
{335, WEAPON_ID}
};
Ersetze hier jeweils WEAPON_ID mit der ID der Waffe (https://wiki.sa-mp.com/wiki/Weapons).Die beiden Arrays:
new eventweapon[200] = {-1,...}; //200 = Maximale Anzahl
new eventmodel[200] = {-1,...};eventweapon[i] = CreateDynamicPickup(RandomWeaponsIDs[w], 19, tmp[r][0], tmp[r][1], tmp[r][2]);
zu:
new idx = GetFreeEventPID();
if(idx == -1) return print("Error: Maximale Anzahl an Event-Waffen erreicht.");
eventweapon[idx] = CreateDynamicPickup(RandomWeaponsIDs[w][0], 19, tmp[r][0], tmp[r][1], tmp[r][2]);
eventmodel[idx] = RandomWeaponsIDs[w][1];Das hier hinzufügen:
stock GetFreeEventPID();
{
for(new i = 0; i < sizeof(eventweapon); i++)
{
if(eventweapon[i] == -1) return i;
}
return -1;
}Und beim Aufnehmen:
public OnPlayerPickUpPickup(playerid, pickupid)
{
for(new i = 0; i < sizeof(eventweapon); i++)
{
if(eventweapon[i] == pickupid)
{
DestroyPickup(eventweapon[i]);
eventweapon[i] = -1;
GivePlayerWeapon(playerid, eventmodel[i], 100);
eventmodel[i] = -1;
return 1;
}
}
return 1;
} -
Danke erstmal, nur habe ich ein kleines Problem.
Sobald ich alles starte, wird mir "Unknown Command" angezeigt, Event wird trotzdem gestartet nur werden keine PickUps erstellt.
So schaut der Befehl aktuell aus.
CMD:estart(playerid,params[])
{new emessage[124];
EventStarted = true;
format(emessage, sizeof(emessage),"{%06x}%s {FFFFFF}has started an Event. Use /ejoin to join the Event!", GetPlayerColor(playerid) >>> 8,SpielerName(playerid));
SendClientMessageToAll(-1, emessage);
for(new i=0; i < MAX_PLAYERS; i++)
{
DestroyDynamicPickup(eventweapon[i]);
}
DropWeapon(10);
return 1;}
-
for(new i=0; i < MAX_PLAYERS; i++)
Zu
for(new i=0; i < sizeof(eventweapon); i++)Und
DestroyDynamicPickup(eventweapon[i]);
Zu
DestroyDynamicPickup(eventweapon[i]);
eventweapon[i] = -1; -
Beitrag von FettSack ()
Dieser Beitrag wurde von dennismitzwein gelöscht (). -
-
Wird jemand aus dem Error log schlau?
betrifft folgende Zeile:
createFrakCar(fID,fahCars[id][fmodel],fahInfo[id][fs_x],fahInfo[id][fs_y],fahInfo[id][fs_z],fahInfo[id][fs_r],fcInfo[id][ffarbe]);
Das ist die Zeile in OnDialogResponse, was er mit ?? meint weiß ich nicht. -
-
fahCars habe ich momentan als Array:
new fahCars[][fchInfoEnum] = {
{596,2148.3457,-1148.2457,24.0449,268.3922,50}, // POLICE LSPD CAR PLATZ: 22
{599,2148.1140,-1143.2367,24.5964,269.6135,50}, // POLICE RANGER PLATZ: 24
{523,2148.1277,-1138.4258,25.1168,267.9870,50}, // POLICE HPV PLATZ: 25
{497,2148.8813,-1133.8751,25.1917,267.8968,50}, // POLICE MAVERICK PLATZ: 26
{411,2147.9229,-1203.5190,23.4772,269.6615,50} // INFERNUS PLATZ: 1
};entsprechende Enum (falls gebraucht)
enum fchInfoEnum
{
fmodel,
Float:fc_x,
Float:fc_y,
Float:fc_z,
Float:fc_r,
fc_preis,
id_x
}
Was noch wissenswert wäre: Ich kann mir immer nur das LSPD-Auto (also die 596) erfolgreich kaufen. Will ich mir eins der anderen Fraktcars kaufen, kriege ich diese Fehlermeldung.//Edit:
Habe noch ein detaillierteres Bild gemacht.
die dialogid=9 ist das hier:
if(dialogid==DIALOG_CHFRAKTS)
{
if(response)
{
printf("1");
new fID=pInfo[playerid][fraktion];
printf("2");
new id=GetPVarInt(playerid,"buyFCarID");
printf("3");
if(fInfo[fID][f_kasse]<fahCars[id][fc_preis])
{
printf("4");
SendClientMessage(playerid,CLR_RED,"In eurer Fraktionskasse befindet sich nicht genuegend Geld fur dieses Auto!");
RemovePlayerFromVehicle(playerid);
return 1;
}
printf("5");
fInfo[fID][f_kasse]-=fahCars[id][fc_preis];
printf("6");
saveFrakKasse(fID);
printf("7");
createFrakCar(fID,fahCars[id][fmodel],fahInfo[id][fs_x],fahInfo[id][fs_y],fahInfo[id][fs_z],fahInfo[id][fs_r],fcInfo[id][ffarbe]);
printf("fID ist %i",fID);
SendClientMessage(playerid,CLR_YELLOW,"Glueckwunsch zum Erwerb eures neuen Fraktautos! Als Leader kannst du mit /fpark euer Fahrzeug umparken.");
RemovePlayerFromVehicle(playerid);
}
else
{
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid,CLR_RED,"Autoverkauf abgebrochen.");
SendClientMessage(playerid,CLR_RED,"Gehe wieder in das Auto, fals du dich verdrueckt hast.");
return 1;
}
}
Die ganzen prints waren nur zu Testzwecken, bin schon etwas länger an dem Problem
Die Funktion:
createFrakCar(frakid,modelid,Float:x,Float:y,Float:z,Float:r,f_farbe)
{
for(new i=0;i<sizeof(fcInfo);i++)
{
if(fcInfo[i][id_x]!=0)continue;
fcInfo[i][fbesitzer]=frakid;
fcInfo[i][fc_x]=x;
fcInfo[i][fc_y]=y;
fcInfo[i][fc_z]=z;
fcInfo[i][fc_r]=r;
fcInfo[i][fmodel]=modelid;
switch(frakid)
{
case 1:
{
f_farbe=-1;
}
case 2:
{
f_farbe=252;
}
}
fcInfo[i][ffarbe]=f_farbe;
fcInfo[i][id_x]=CreateVehicle(modelid,x,y,z,r,f_farbe,-1,60);
saveFrakCarToDB(frakid,i);
return 1;
}
return 1;
} -