To nie zadziała
Bo?
To równanie zostało stworzone przy pomocy kodu LaTeX:
Edytor LaTeX online: CodeCogs.com/latex/eqneditor.php
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|




Mężczyzna
Napisane przez Robiin
w 28.08.2023 17:05
Napisane przez oeN.
w 08.08.2023 20:48
Paczka ma pewnie z 6-8 lat.
Raczej 99% pluginów ma swoje .sma. Pewnie syf w plikach, jest tam kilka serwerów mimo wszystko.
CS:GO Mod - oryginalny oraz wersja Jackpot
JailBreak - unikalny, pisałem całość od 0
Star Warsy - unikalne, pisane od 0
Paintball 4Fun
Paintball z klasami
CoD: Black Ops 3
DD2 Only
I pojedyncze pluginy których nie pamiętam.
https://drive.google...iew?usp=sharing
Napisane przez Robiin
w 07.02.2023 13:00
Reklamujcie się dalej w taki sposób, zbierajcie co raz to więcej wrogów przez pajacowanie w tematach i czyste podpierdzielanie pluginów, a w końcu się ktoś wk***i i wam skończy działność ![]()
Jeśli ktoś kupił jakikolwiek z ich pluginów i chciałby się podzielić pliczkiem .amxx lub .sma (które oczywiście usunę po sprawie), to chętnie sprawdzę jak dużo kodu jest podrąbane z pluginów moich, Pawła itd.
Autor misji, Smiguel, to wciąż zbanowany SSTeam.
Ponadto dwa z pluginów, które ktoś mi podesłał:
Plugin skinów broni jest edytowaną kopią pluginu Kamilovvskiego: https://amxx.pl/topi...ru-broni-skiny/, ale autor zmieniony na "mpN`"
Różnice w niektórych linijkach to skutek dekompilacji - jestem pewny, że sma wygląda 1:1.
Lewo - kod mpN
Prawo - kod oryginalny

Plugin mLogs jest kolejną kopią pluginu: https://forums.allie...p/t-157135.html, autor znów zmieniony na "mpN`":


Napisane przez Robiin
w 11.01.2023 01:17
Nvault i sql jest zbędny.
Nie, bo napisał, że ma się resetować po zmianie mapy. Brak snu robi swoje ![]()
Nie potrzebujesz ani sql ani nvaulta. Jeśli ma się wszystko resetować po zmianie mapy to wystarczy przechowywać nazwę gracza i ilość użyć. Zmiana mapy sama wyzeruje kolekcję. Polecam użyć hashmapy (Trie), gdzie kluczem będzie nick gracza a wartością aktualna ilość użyć komendy.
A jak już chcesz iść w tym kierunku @Boski, to polecam poczytać o Array (dynamiczne tablice).
Poprawna wersja w załączniku - ale nie testowałem.
reset_score (1).sma 1,26 KB 62 Ilość pobrań
reset_score (1).amxx
Napisane przez Robiin
w 07.08.2022 16:58
Napis jest tablicą. Więc masz tablicę, która przechowuję tablicę tablic - czyli trójwymiarową. A zadeklarowałeś 2 wymiary ([][]).
Dlatego deklarację "models" zmień na:
new const models[][][] = {
{"guerilla", "Zwykly Model"},
{"gign", "Zwykly Model"},
{"vendetta", "Vendetta"},
{"MechaGerman", "Mecha German"}
}
Dla testu możesz sobie wypisać pewne dane:
log_amx("Model pierwszy, Nazwa: %s, Plik: %s", models[0][0], models[0][1]);
Dla ułatwienia możesz użyć enuma:
enum _: (+= 1)
{
MODEL_FILE,
MODEL_NAME
};
Wtedy użycie "models":
log_amx("Model pierwszy, Nazwa: %s, Plik: %s", models[0][MODEL_NAME], models[0][MODEL_FILE]);
Napisane przez Robiin
w 20.05.2022 17:39
Sortowanie struktury:
#include <amxmodx>
#define AUTHOR "Robin - amxx.pl/user/60210-wicked/"
#define MAX_STR_LEN 25
// Nasza struktura danych.
// Nie musi być w enumie, ale tak wygląda ładniej i wygodniej się z tym pracuje.
enum _:MyStruct (+= 1)
{
INT_VALUE,
STR_VALUE[MAX_STR_LEN + 1]
};
new Array:array;
public plugin_init()
{
register_plugin("", "v1.0", AUTHOR);
// Tworzymy tablicę z naszą strukturą.
array = ArrayCreate(MyStruct, 1);
// Dodajemy przykładowe dane. (z posta, który napisałeś)
add_dummy_record(array, 23, "Nazwa");
add_dummy_record(array, 5, "Inna nazwa");
add_dummy_record(array, 1, "costam");
add_dummy_record(array, 7, "test");
add_dummy_record(array, 11, "testcos");
add_dummy_record(array, 12, "cosiktam");
// Wypisujemy przed.
print_array(array, "PRE");
// Sortujemy.
ArraySort(array, "sort_function");
// Wypisujemy po.
print_array(array, "POST");
}
public add_dummy_record(Array:a, int, const str[])
{
new data[MyStruct];
data[INT_VALUE] = int;
copy(data[STR_VALUE], MAX_STR_LEN, str);
ArrayPushArray(a, data);
}
public sort_function(Array:array, a, b)
{
new data[2][MyStruct];
ArrayGetArray(array, a, data[0]);
ArrayGetArray(array, b, data[1]);
// Sortujemy względem 'INT_VALUE'.
if(data[0][INT_VALUE] > data[1][INT_VALUE]) return -1;
if(data[0][INT_VALUE] < data[1][INT_VALUE]) return 1;
return 0;
}
public print_array(Array:array, const prefix[])
{
new data[MyStruct];
for(new i = 0; i < ArraySize(array); i++)
{
ArrayGetArray(array, i, data);
log_amx("%s: ^"%s^" - %i", prefix, data[STR_VALUE], data[INT_VALUE]);
}
}
L 05/20/2022 - 18:37:11: [arrays.amxx] PRE: "Nazwa" - 23 L 05/20/2022 - 18:37:11: [arrays.amxx] PRE: "Inna nazwa" - 5 L 05/20/2022 - 18:37:11: [arrays.amxx] PRE: "costam" - 1 L 05/20/2022 - 18:37:11: [arrays.amxx] PRE: "test" - 7 L 05/20/2022 - 18:37:11: [arrays.amxx] PRE: "testcos" - 11 L 05/20/2022 - 18:37:11: [arrays.amxx] PRE: "cosiktam" - 12 L 05/20/2022 - 18:37:11: [arrays.amxx] POST: "Nazwa" - 23 L 05/20/2022 - 18:37:11: [arrays.amxx] POST: "cosiktam" - 12 L 05/20/2022 - 18:37:11: [arrays.amxx] POST: "testcos" - 11 L 05/20/2022 - 18:37:11: [arrays.amxx] POST: "test" - 7 L 05/20/2022 - 18:37:11: [arrays.amxx] POST: "Inna nazwa" - 5 L 05/20/2022 - 18:37:11: [arrays.amxx] POST: "costam" - 1
Napisane przez Rivit
w 17.05.2022 20:07
Napisane przez Rivit
w 19.04.2022 20:29
Trochę późno, ale też tak uważam jak DarkGL.
Ogólnie to natywy są wywoływane w bardzo ciekawy sposób, poprzez instrukcję asemblera `sysreq.c` (https://raw.githubus...oc/pawn-imp.pdf), która przyjmuje numer funkcji (system service się to bodajże nazywało w docu) do wywołania i to dopiero wywołuje tą funckję i potem wraca.
A takie bezpośrednie odwoływanie się do tablicy jest dużo lepsze, bo nie generuje nam instrukcji `sysreq.c`.
Porównaj sobie asembler (załącznik) z twojego kodu:
Ale nie przejmowałbym się takimi optymalizacjami, David Anderson zrobił świetną robotę dawno temu dokładając JIT'a do AMXX'a przez co maszyna wirtualna AMXX nie musi wykonywać instrukcji pawnowych, a natywny asembler (x86 czy x64 zależy na czym odpalasz to). Polecam poczytać kod źródłowy AMXX'a, bardzo pomaga w zrozumieniu jak ta machineria działa pod spodem
compare.zip 636 bajtów 49 Ilość pobrań
Napisane przez Abes Mapper
w 17.01.2010 16:13
Reset Score
by SILENTTT
resetscore.sma 2,42 KB 6566 Ilość pobrań
resetscore.amxx
Napisane przez Robiin
w 02.12.2021 18:37
Napisane przez O'Zone
w 08.11.2021 22:17
Napisane przez dasiek
w 12.10.2021 07:23
Lecimy gumową kaczuszką!
Twój warunek wygląda tak -
Jeśli użytkownik NIE JEST - hltv ORAZ - Użytkownikiem steam ORAZ - Botem ORAZ - Nie ma flagi ADMIN_LEVEL_G
Użytkownik musi spełnić te wszystkie warunki i na nim negujesz.
Szybki test ze sprawdzania (js ale logiczne operatory są te same)
let isHltv = false;
let isSteam = false;
let isBot = false;
let hasFlag = false;
if(!isHltv && !isSteam && !isBot && !hasFlag) {
console.log('dupa');
}
// 'dupa'
Wszystkie flagi są ustawione na false (czyli użytkownik nie jest botem, nie jest steamem, nie jest hltv i nie ma flagi). Teraz jest, jak użytkownik spełnia wszystkie te warunki
let isHltv = true;
let isSteam = true;
let isBot = true;
let hasFlag = true;
if(!(isHltv && isSteam && isBot && hasFlag)) {
console.log('dupa');
}
// undefined - nic nie wypisało
zakładając, że zamieniamy console.log z dupą na uruchomienie taska, task się nie uruchomi. Ale jeśli przynajmniej jeden z tych warunków będzie true, task się uruchomi
let isHltv = true;
let isSteam = false;
let isBot = false;
let hasFlag = false;
if(!(isHltv && isSteam && isBot && hasFlag)) {
console.log('dupa');
}
// 'dupa'
W tej sytuacji, proponuję każdą flagę sprawdzać oddzielnie, nie grupować w nawiasach.
Przykładowo - Twój task ma się uruchomić dla użytkowników którzy
- Nie są botami
- nie są steam
- Nie są botem
- Nie mają fagi
Korzystając z tego samego kodu, tylko dodając sprawdzenie na każdym warunku
let isHltv = true;
let isSteam = false;
let isBot = false;
let hasFlag = false;
if(!isHltv && !isSteam && !isBot && !hasFlag) {
console.log('dupa');
}
// undefined - nie wyświetla się
let isHltv = false;
let isSteam = false;
let isBot = false;
let hasFlag = true;
if(!isHltv && !isSteam && !isBot && !hasFlag) {
console.log('dupa');
}
// undefined - nie wyświetla się
Więc, jeśli chcesz, aby task nie wykonywał się, dla osób, które są botem albo hltv albo steamem albo nie maja flagi (słowo klucz, w Twoim przypadku było i na głos Sobie przeczytaj to zdanie raz ze słowem albo a raz ze słowem "i") nie mają tej flagi warunek powinien wyglądać tak :
if(!is_user_hltv(id) && !is_steam(id) && !is_user_bot(id) && !(get_user_flags(id) & ADMIN_LEVEL_G))
PS - kod który podałem śmiało możesz wrzucić np w konsole js w przeglądarce i pobawić się tym sam.
Napisane przez Robiin
w 13.09.2021 17:22
#include <amxmodx>
#define AUTHOR "Wicked - amxx.pl/user/60210-wicked/"
#define MAX_TEAM_NAME 64
#define MAX_WEAPON_MODEL 128
enum _:WEAPON_MODEL_DATA
{
WMD_V[MAX_WEAPON_MODEL],
WMD_P[MAX_WEAPON_MODEL],
WMD_W[MAX_WEAPON_MODEL]
};
enum _:BOXING_TEAM_DATA
{
BTD_NAME[MAX_TEAM_NAME],
BTD_GLOVES[WEAPON_MODEL_DATA]
};
new Array:boxing_teams;
public plugin_init()
{
register_plugin("", "v1.0", AUTHOR);
boxing_teams = initialize_teams();
add_team("Team one", "v_model.mdl", "p_model.mdl", "w_model.mdl");
add_team("Team two", "v_model2.mdl", "p_model2.mdl", "w_model2.mdl");
}
Array:initialize_teams()
{
return ArrayCreate(BOXING_TEAM_DATA, 1);
}
add_team(const name[], const v[], const p[], const w[])
{
new team[BOXING_TEAM_DATA];
copy(team[BTD_NAME], BTD_NAME - 1, name);
copy(team[BTD_GLOVES][WMD_V], WMD_V - 1, v);
copy(team[BTD_GLOVES][WMD_P], WMD_P - 1, p);
copy(team[BTD_GLOVES][WMD_W], WMD_W - 1, w);
log_amx("Adding: Team=^"%s^" V=^"%s^" P=^"%s^" W=^"%s^"",
team[BTD_NAME],
team[BTD_GLOVES][WMD_V],
team[BTD_GLOVES][WMD_P],
team[BTD_GLOVES][WMD_W]);
ArrayPushArray(boxing_teams, team);
}
L 09/13/2021 - 18:21:46: [test_enum.amxx] Adding: Team="Team one" V="v_model.mdl" P="p_model.mdl" W="w_model.mdl" L 09/13/2021 - 18:21:46: [test_enum.amxx] Adding: Team="Team two" V="v_model2.mdl" P="p_model2.mdl" W="w_model2.mdl"
Napisane przez O'Zone
w 03.04.2021 14:43
Wersja 2.5.9 została wydana:



Moja zawartość