Habe dafür immer http://forum.sa-mp.com/showthread.php?t=182317 verwendet. Sehr alt aber immernoch nützlich !
Beiträge von JustMe.77
-
-
Hi, habe 3 Checkpoints auf einer selbst gemappten Map erstellt, nur habe ich eben folgendes lesen dürfen:
"Known Bug: Checkpoints created on server-created objects (CreateObject/CreatePlayerObject) will appear down on the 'real' ground, but will still function correctly. There is no fix available for this issue. A pickup can be used instead."
Kann man mit PickUps Checkpoints erstellen? Falls ja, welche ID denn?
-
Lad das crashdetect Plugin und zeig uns dann die Serverlog..
-
Das wird ihn bei seinem Problem nicht helfen..
Einfach deine Befehle in zcmd umschreiben, Beispiel:CMD:test(playerid,params[])
{
new Float:x, Float:y, Flaot:z;
GetPlayerPos(playerid, x,y,z);
FCNPC_Spawn(1, 367, x, y, z);
return 1;
} -
ZCMD sorgt, soweit ich weiß dafür das Befehle die in OnPlayerCommandText Public drin sind, ignoriert werden.
Müsstest also entweder ZCMD rausmachen oder alle Befehle umschreiben in ZCMD (empfehle letzteres) -
Hey, wie müsste ich vorgehen wenn ich allen registrierten Accounts etwas bestimmtes geben möchte, z.B. EXP?
(System ist auf MySQL basiert)Wenn z.B. mein EXP Befehl so ausschaut:
CMD:givexp(playerid, params[]){
new pid, pEXP, cQuery[128];if(!CheckAccesName(playerid)) return
SendClientMessage(playerid, COLOR_RED, ACCES_Fail);if(sscanf(params, "ui", pid, pEXP)) return
SendClientMessage(playerid, COLOR_RED, "Use: /givexp <player> <amount>");if(!IsPlayerConnected(pid)) return
SendClientMessage(playerid, COLOR_RED, ID_Fail);if(!(0 < pEXP < 1001)) return
SendClientMessage(playerid, COLOR_RED, "Min: 1 EXP - Max: 1000 EXP.");format(cQuery, sizeof(cQuery), "You gave to {%06x}%s(%d) {FF0000}%d {FFFFFF}XP", GetPlayerColor(playerid) >>> 8, GetName(playerid), GetName(pid), pEXP);
SendClientMessage(playerid, -1, cQuery);format(cQuery, sizeof(cQuery), "Admin %s gave %s %d XP", GetName(playerid), GetName(pid), pEXP);
writeLog("Logs/GiveXP.txt", cQuery);GivePlayerExp(pid, pEXP);
return 1;
} -
Habe soeben dein Tutorial verwendet um mein Apache Problem zu beheben, hätte das ohne dein Tutorial NIE im Leben hingekriegt, vielen Dank
-
Ne, der Befehl soll auch nicht verfügbar sein während man Fahrer/Beifahrer ist, trotzdem danke
Edit:
Habe ein weiteres kleines Problem, hoffe ihr könnt mir behilflich sein. Mit folgendem Befehl gebe ich Spielern eine bestimmte Waffe, benutze ich anstatt den Waffen Namen die ID (beispielsweise 24), taucht folgendes in der ServerLog auf.
sscanf warning: Format specifier does not match parameter count.
[debug] Run time error 4: "Array index out of bounds"
[debug] Accessing element at negative index -1
[debug] AMX backtrace:
[debug] #0 0009e8d8 in GetWeaponNameById (weaponid=-1) at C:\Users\David\Desktop\LnD\gamemodes\main.pwn:6446
[debug]
#1 0008c31c in public cmd_givegun (playerid=0, params[]=@00dc5d54 "0
24") at C:\Users\David\Desktop\LnD\gamemodes\main.pwn:4886
[debug] #2 native CallLocalFunction () from samp-server.exe
[debug]
#3 000238c0 in public OnPlayerCommandText (playerid=0,
cmdtext[]=@00dc5d1c "/givegun 0 24") at
C:\Users\David\Desktop\LnD\pawno\include\zcmd.inc:110CMD:givegun(playerid, params[]) {
new playerID, gun[24], cQuery[144];if(pData[playerid][P_Admin] < 5) return
SendClientMessage(playerid, COLOR_RED, LV_Fail);if(sscanf(params,"us[24]", playerID, gun)) return
SendClientMessage(playerid, COLOR_RED, "Use: /givegun <player> <weapon name>");GivePlayerWeapon(playerID, GetWeaponIdByName(gun), 999);
new weapname = GetWeaponIdByName(gun);if(IsSilent[playerid] == false) {
format(cQuery, sizeof(cQuery), "{%06x}%s gave you a weapon (%s)", GetPlayerColor(playerid) >>> 8, GetName(playerid), GetWeaponNameById(weapname));
SendClientMessage(playerID, -1, cQuery);
}
return 1;
} -
Alles klar, verwende dann PLAYER_STATE_ONFOOT, danke dir
-
Hallo, habe folgendes Problem. Egal ob der Spieler gespawnt ist oder nicht, die Nachricht das er nicht gespawnt ist erscheint immer.
CMD:duel(playerid, params[]) {
new weapid1, weapid2;if(GetPlayerState(playerid) != PLAYER_STATE_SPAWNED)
{
SendClientMessage(playerid, COLOR_RED, "You need to spawn first!");
return 1;
}if(Round[r_iniciando] == true) return SendClientMessage(playerid, COLOR_RED, "You can't use this command now!");
if(sscanf(params, "ii", weapid1, weapid2)) return SendClientMessage(playerid, COLOR_RED, "Use: /duel <gun id 1> <gun id 2>");
if(weapid1 < 22 || weapid1 > 34 || weapid2 < 22 || weapid2 > 34) return SendClientMessage(playerid, COLOR_RED, "Invalid weapon ID.");
if(InDuel[playerid] == true) return SendClientMessage(playerid, COLOR_RED, "You're already in a duel!");
if(Duel[playerid] != 998) return SendClientMessage(playerid, COLOR_RED, "You're already in a duel!");
if(CreatedDuel[playerid] == 1) return SendClientMessage(playerid, COLOR_RED, "You already created a duel, type /cancelduel to leave it.");CreatedDuel[playerid] = 1;
Duel[playerid] = 999;DuelWeapons[playerid][0] = weapid1;
DuelWeapons[playerid][1] = weapid2;new dQuery[144];
format(dQuery, sizeof(dQuery), "{FF0000}(DUEL) {%06x}%s {FFFFFF}has created a duel (%s and %s) type {FF0000}/acceptduel %d", GetPlayerColor(playerid) >>> 8, GetName(playerid), GetWeaponNameEx(weapid1), GetWeaponNameEx(weapid2), playerid);
SendClientMessageToAll(COLOR_RED, dQuery);return 1;
}Was habe ich falsch gemacht?
-
Ne, das hat schon ein Grund warum das in ein FS muss, sonst würde ich es direkt ins Gamemode reinmachen.
-
Paderborn
-
Hi, ich hab mal eine Frage.
Ich lasse per FilterScript einen Spieler bannen, möchte dann aber Funktionen welche im Gamemode vorhanden sind, benutzen.
Geht das mit CallRemoteFuntion und wenn ja, wie?Beispiel:
Im FilterScript wird man für Waffen Hacks gebannt, dabei soll das vom Gamemode verwendet werden bzw. eingetragen werden:
pData[playerID][P_Banned] = 1;
(Ganzer Ban Befeh im Gamemodel)
CMD:ban(playerid, params[]) {
new playerID, Reason[64], cQuery[333 + (MAX_PLAYER_NAME * 2)], bQuery[164];
new Year, Month, Day, Hour, Minute, Second;if(pData[playerid][P_Admin] < 2) return
SendClientMessage(playerid, COLOR_RED, LV_Fail);if(sscanf(params,"us[32]", playerID, Reason)) return
SendClientMessage(playerid, COLOR_RED, "Use: /ban <player> <reason>");if(!IsPlayerConnected(playerID)) return
SendClientMessage(playerid, COLOR_RED, ID_Fail);if(pData[playerid][P_Admin] < pData[playerID][P_Admin]) return
SendClientMessage(playerid, COLOR_RED, "You can't ban this admin.");getdate(Year, Month, Day);
gettime(Hour, Minute, Second);
format(cQuery, sizeof(cQuery), "INSERT INTO bans (Name,Admin,IP,Reason,Day,Month,Year,Hour,Minute) VALUES ('%s','%s','%s','%s',%d,%d,%d,%d,%d)",
GetName(playerID),
GetName(playerid),
GetIP(playerID),
Reason,
Day,
Month,
Year,
Hour,//144
Minute
);
mysql_query(MySQL, cQuery);strcat((cQuery[0] = '\0', cQuery), "{FF6600}You have been banned from this server! More information below:\n\n");
format(bQuery, sizeof(bQuery), "{FF0000}Account name: {FFFFFF}%s\n{FF0000}Banned by: {FFFFFF}%s\n", GetName(playerID), GetName(playerid));
strcat(cQuery, bQuery);format(bQuery, sizeof(bQuery), "{FF0000}IP: {FFFFFF}%s\n{FF0000}Reason: {FFFFFF}%s\n", GetIP(playerID), Reason);
strcat(cQuery, bQuery);
format(bQuery, sizeof(bQuery), "{FF0000}Date: {FFFFFF}%02d/%02d/%02d\n", Day, Month, Year);
strcat(cQuery, bQuery);
format(bQuery, sizeof(bQuery), "{FF0000}Time: {FFFFFF}%02d:%02d\n\n", Hour, Minute);
strcat(cQuery, bQuery);strcat(cQuery, "{FF6600}Appeal at www.lndsquad.com.\n");
ShowPlayerDialog(playerID, D_ShowBan, DIALOG_STYLE_MSGBOX, "You have been banned!", cQuery, "Bye", "");
format(cQuery, sizeof(cQuery), "You banned %s for %s", GetName(playerID), Reason);
SendClientMessage(playerid, COLOR_YELLOW, cQuery);format(cQuery, sizeof(cQuery), "%s banned %s for %s", GetName(playerid), GetName(playerID), Reason);
SendAdminMessage(COLOR_ORANGE, cQuery);format(cQuery, sizeof(cQuery), "Admin %s banned %s for (%s)", GetName(playerid), GetName(playerID), Reason);
writeLog("Logs/Ban.txt", cQuery);pData[playerID][P_Banned] = 1;
Kick(playerID);
/*Ban(playerID);
SendRconCommand("relodbans");*/
return 1;
} -
Jetzt funktioniert's, aber ich erhalte zufällige Waffen, liegt das am Code? Weil ich 100 % die richtigen IDs zu den richtigen Pickup Models eingetragen habe.
-
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;}
-
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;
} -
Stürzt dein Server ab oder kriegst du wirklich nur ein Crash?
Wie schaut dein Code aus vom Befehl bei dem du Probleme hast? -
Gibt es auch einen mit nem richtigen Launcher?
Der Anticheat von Whitetiger (oben verlinkt) ist ein Launcher. Bald kommt aber v3 raus, darauf würde ich warten
-
das geht nur mit playaudiostream
und radius aber am auto selbst leider neinSeit 0.3.7 gibt es eine Funktion dafür, die wurde oben bereits erwähnt bzw. verlinkt und ist genau das was du suchst @SyroX.
-
Funktioniert klasse. Möchte jetzt den Spieler eine Waffe geben sobald er das PickUp aufnimmt.
Könnte das jetzt per OnPlayerPickUpPickUp machen, aber habe folgendes gelesen nur scheint das nicht zu klappen:
"Certain pickup types come with 'automatic responses', for example using an M4 model in the pickup will automatically give the player the weapon and some ammo. For fully scripted pickups, type 1 should be used."
Erhalte nicht automatisch eine Waffe/Munition, weiß nicht woran das liegt. Also müsste ich das denke ich per Public selber lösen, aber wie überprüfe ich welches Pickup Model der Spieler aufgehoben hat sodass ich ihn die entsprechende Waffe geben kann?
Mein Public schaut aktuell so aus:
public OnPlayerPickUpPickup(playerid, pickupid)
{
for(new i = 0; i < MAX_PLAYERS; i++) {
if(eventweapon[i] == pickupid) {
//Hier eventuell waffen geben...
DestroyPickup(eventweapon[i]);
eventweapon[i] = -1;return 1;
}
}
return 1;
}