Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

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.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Tłumaczenie funkcji


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
7 odpowiedzi w tym temacie

#1 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 01.12.2008 10:06

Tutorial będzie edytowany w miarę mojego wolnego czasu

Funkcje Core-tłumaczenie:


access ( id, level ) -sprawdza czy dany gracz ma daną flagę
*id to numer gracza
*level to flaga gracza jaką chcemy sprawdzić (np. ADMIN_KICK)
#Zwraca wartość false jeśli gracz nie ma danej flagi lub true jeśli ją ma.

Przykład:
if(access(id,ADMIN_LEVEL_C))
         client_print(id,print_chat,"TAK")
else
         client_print(id,print_chat,"NIE")
W rezultacie jeśli gracz posiada flage "o(admin_level_c)" zostanie mu wypisane TAK, jeśli nie posiada zostanie wypisane mu NIE


////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////




add ( dest[], len, const src[], [ max ] ) -dodaje jeden napis do drugiego
*dest[] to tablica znaków do której będziemy dodawać (po wykonaniu operacji napis docelowy) tak więc musi ona mieć taką wielkość, aby po dodaniu drugiego napisu(być może i trzeciego oraz czwartego itd) ilość znaków napisu docelowego nie była większa niż wielkość tej tablicy.
*len to maksymalna długość docelowego wyrazu
*const src[] to napis, który chcemy dodać do drugiego (do dest[])
*[ max ] to maksymalna ilość znaków z tablicy const src[], którą pozwalamy dodać do dest[]
#Zwraca długość napisu wyjściowego

Przykład:
new napis[32]="To jest napis testowy" //ad1
new napisik[]="-a-to drugi" //ad2
new ile=add(napis,sizeof(napis),napisik,sizeof(napisik)) //ad3

ad1) tablica przewiduje 32 znaki, czyli dokładnie tyle ile potrzebujemy aby zmieścić te dwa napisy, jeśli nie będziemy pewni ile miejsc może nam to zając (wartości do tablic zostaną przypisane w czasie działania pluginu(np. get_user_name-nick może być różnej długości)) najlepiej jest przewidzieć maksymalną możliwą długość.

ad2)może to być też tablica o określonej ilości znaków, jeśli będziemy chcieli sczytać do niej np. nick

ad3)funkcja zwraca długość docelowego napisu(po dodaniu), użycie funkcji sizeof pozwala nam sprawdzić jaką ma długość(może mieć różną zależnie od potrzeb, może być sczytany nick-nie wiemy wtedy jaką będzie miał długość-sprawdzamy ją funkcją sizeof)dany napis i takiej długości używamy-dość optymalne rozwiązanie i chyba jedyne w przypadku kiedy pisząc plugin nie możemy przewidzieć jaką długość będzie miał nasz string. Jak widać tutaj jako maksymalną długość napisu wyjściowego mamy wielkość tablicy dest, która jak wcześniej pisałem musi przewidzieć maksymalną długość docelowego napisu.










////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////










AddMenuItem
callfunc_begin
callfunc_begin_i
callfunc_end
callfunc_push_float
callfunc_push_floatrf
callfunc_push_int
callfunc_push_intrf
callfunc_push_str
change_task
clamp



////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////





client_authorized(id) - funkcja wywoływana zaraz po client_connect(id), jednak w momencie gdy już gracz zostaje wpuszczony na serwer i zostały mu już przydzielone odpowiednie flagi
*id - numer gracza, który został rozpoznany

Przykład:

public client_authorized(id)
{
       set_user_name(id,"Polaczylem sie")
}


////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////



client_cmd(index,const command[]) - wykonuje komendę w consoli gracza.
*index to id gracza(1-32 (0 aby wykonać u wszystkich)), któremu chcemy w consoli wykonać komendę.
const command[] -komenda jaką chcemy wykonać

Przykład:
client_cmd(0,"volume 0")
lub
new nick[]="Nick testowy"
 
client_cmd(0,"%s",nick)





////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////



client_command(id) -wywoływana jeśli gracz użyje komendy w swojej konsoli (nie działa dla wszystkich)
*id - id gracza, który wykonał komende
#Do użycia w public

Przykład:(wpisaliśmy w consoli komenda_testowa test tescik testunio testowo)
public client_command(id)
{
	new komenda[19],arg1[12],arg2[12],arg3[12],arg4[12],linijka[128]
	
	read_argv(0,komenda,18)
	read_argv(1,arg1,11)
	read_argv(2,arg2,11)
	read_argv(3,arg3,11)
	read_argv(4,arg4,11)
	read_args(linijka,127)
	new ile_argumentow=read_argc()
	
	client_print(id,print_chat,"komenda:%s",komenda)
	client_print(id,print_chat,"arg1:%s",arg1)
	client_print(id,print_chat,"arg2:%s",arg2)
	client_print(id,print_chat,"arg3:%s",arg3)
	client_print(id,print_chat,"arg4:%s",arg4)
	client_print(id,print_chat,"linijka:%s",linijka)
	client_print(id,print_chat,"ilosc:%d",ile_argumentow)
}
W wyniku takiej operacji zostanie wypisane nam:
komenda:komenda_testowa //komenda-czyli pierwszy wyraz jaki wpiszemy
arg1:test //pierwszy argument jaki podaliśmy
arg2:tescik //drugi argument jaki podaliśmy
arg3:testunio //trzeci argument jaki podaliśmy
arg4:testowo //czwarty argument jaki podaliśmy
linijka:test tescik testunio testowo //wszystkie argumenty jakie podaliśmy
ilosc:5 //ilość wszystkich argumentów (łącznie z komendą)

Oczywiście nie ma obowiązku zczytywania dokładnie 4 argumentów a jedynie tylu ile nam potrzeba, może to być 1, a może i 10.





////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////




client_connect(id) - wykonuje się w momencie kiedy wykryto próbę połączenia się gracza
*id to numer gracza którego połączenie się wykryto

Przykład:
public client_connect(id)
{
     server_cmd("echo ^"gracz o id=%d laczy sie^"",id)
}




////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////





client_disconnect(id) - wykonuje się w momencie gdy gracz opuszcza serwer
*id to numer gracza który opuszcza serwer

Przykład:
public client_disconnect(id)
{
     server_cmd("echo ^"gracz o id=%d opuscil serwer^"",id)
}




////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////

client_infochanged
client_print
client_putinserver
close_dir
cmd_access
cmd_target
colored_menus
console_cmd
console_print
contain
containi
copy
copyc
cstrike_running
cvar_exists
date
delete_file
dir_exists
emit_sound
engclient_cmd
engclient_print
equal
equali
fclose
feof
fflush
fgetc
fgetf
fgeti
fgetl
fgets
file_exists
file_size
find_player
find_plugin_byfile
float
floatabs
floatacos
floatadd
floatasin
floatatan
floatatan2
floatcmp
floatcos
floatdiv
floatfract
floatlog
floatmul
floatpower
floatround
floatsin
floatsqroot
floatstr
floatsub
floattan
float_to_str
fopen
force_unmodified
format
format_args
format_time
fputc
fputf
fputi
fputl
fputs
fread
fseek
ftell
funcidx
fwrite
getarg
get_array
get_array_f
get_basedir
get_clcmd
get_clcmdsnum
get_concmd
get_concmdsnum
get_configsdir
get_cvar_flags
get_cvar_float
get_cvar_num
get_cvar_string
get_datadir
get_distance
get_distance_f
get_flags
get_float_byref
get_func_id
get_gametime
get_localinfo
get_mapname
get_maxplayers
get_modname
get_module
get_modulesnum
get_param
get_param_byref
get_param_f
get_players
get_playersnum
get_plugin
get_pluginsnum
get_srvcmd
get_srvcmdsnum
get_string
get_systime
get_time
get_timeleft
get_user_aiming
get_user_ammo
get_user_armor
get_user_attacker
get_user_authid
get_user_deaths
get_user_flags
get_user_frags
get_user_health
get_user_index
get_user_info
get_user_ip
get_user_menu
get_user_msgid
get_user_name
get_user_origin
get_user_ping
get_user_team
get_user_time
get_user_userid
get_user_weapon
get_user_weapons
get_vaultdata
get_weaponname
get_xvar_float
get_xvar_id
get_xvar_num
heapspace
inconsistent_file
isalnum
isalpha
isdigit
isspace
is_dedicated_server
is_linux_server
is_map_valid
is_module_loaded
is_plugin_loaded
is_running
is_user_admin
is_user_alive
is_user_bot
is_user_connected
is_user_connecting
is_user_hltv
jit_enabled
log_amx
log_error
log_message
log_to_file
max
md5
md5_file
menu_additem
menu_create
menu_display
menu_find_id
menu_items
menu_item_getinfo
menu_item_setcall
menu_item_setcmd
menu_item_setname
menu_makecallback
menu_pages
message_begin
message_end
min
next_file
numargs
num_to_str
num_to_word

open_dir
param_convert
parse
parse_loguser
parse_time
pause
plugin_cfg
plugin_end
plugin_flags
plugin_init
plugin_log
plugin_modules
plugin_natives
plugin_pause
plugin_precache
plugin_unpause
power
precache_model
precache_sound
query_client_cvar
random
random_float
random_num
read_argc
read_args
read_argv
read_data
read_datanum
read_dir
read_file
read_flags
read_logargc
read_logargv
read_logdata
register_clcmd
register_concmd
register_cvar
register_dictionary
register_event
register_library
register_logevent
register_menu
register_menucmd
register_menuid
register_native
register_plugin
register_srvcmd
remove_cvar_flags
remove_quotes
remove_task
remove_user_flags
remove_vaultdata
replace
require_module
rewind
server_cmd
server_exec
server_print
setarg
setc
set_array
set_array_f
set_cvar_flags
set_cvar_float
set_cvar_num
set_cvar_string
set_error_filter
set_float_byref
set_hudmessage
set_localinfo
set_param_byref
set_string
set_task
set_user_deaths
set_user_flags
set_user_frags
set_user_info
set_vaultdata
set_xvar_float
set_xvar_num
show_activity
show_hudmessage
show_menu
show_motd

sqroot
strbreak
strcat
strcmp
strfind
strlen
strpack
strtolower
strtoupper
strunpack
str_to_float
str_to_num
swapchars
task_exists
tickcount
time
tolower
toupper
trim
ucfirst
unlink
unpause
user_has_weapon
user_kill
user_slap
vaultdata_exists
write_angle
write_byte
write_char
write_coord
write_entity
write_file
write_long
write_short
write_string
xvar_exists
  • +
  • -
  • 1

#2 darkman

    Wszechwiedzący

  • Przyjaciel

Reputacja: 87
Zaawansowany

  • Postów:553
  • Lokalizacja:inactive
Offline

Napisano 01.12.2008 15:32

najs głank :D
  • +
  • -
  • 0

#3 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 01.12.2008 17:17

Powinienes sobie core bardziej podzielic 'tematycznie' bo tak bedzie lekki balagan i tyle tego bedzie ze az bedzie trudno cos znalezc :F

Ale dobrze widziec ze chcesz dzialac :)
  • +
  • -
  • 0

#4 grankee

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 01.12.2008 17:56

Zrobię i będę się zajmował dzieleniem, bo nie mam teraz pomysłu.
  • +
  • -
  • 0

#5 soja

    Początkujący

  • Użytkownik

Reputacja: 89
Zaawansowany

  • Postów:13
  • GG:
Offline

Napisano 01.12.2008 21:49

Cel ambitny, tylko się zastanawiam grankee, w jakim czasie zdążyłbyś to wszystko opisać.

Nie prościej byłoby napisać coś w rodzaju funcwiki? Tzn. wyszukiwarka funkcji z objaśnieniem ich, do której można dodawać notki i/lub edytować same wpisy, jeśli ktoś wie coś więcej na jej temat? Gdyby więcej osób nad tym siadło, zróbiłaby się ładna dokumentacja dla polskich scripterów i cel byłby osiągnięty znacznie szybciej. Co o tym myślicie? ;)
  • +
  • -
  • 0

#6 darkman

    Wszechwiedzący

  • Przyjaciel

Reputacja: 87
Zaawansowany

  • Postów:553
  • Lokalizacja:inactive
Offline

Napisano 01.12.2008 22:03

Cel ambitny, tylko się zastanawiam grankee, w jakim czasie zdążyłbyś to wszystko opisać.

Nie prościej byłoby napisać coś w rodzaju funcwiki? Tzn. wyszukiwarka funkcji z objaśnieniem ich, do której można dodawać notki i/lub edytować same wpisy, jeśli ktoś wie coś więcej na jej temat? Gdyby więcej osób nad tym siadło, zróbiłaby się ładna dokumentacja dla polskich scripterów i cel byłby osiągnięty znacznie szybciej. Co o tym myślicie? ;)


Pomysłodawca roku :D Jestem za w 100%, ale dużo pracy nad tym.
  • +
  • -
  • 0

#7 grankee

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 01.12.2008 23:34

zastanowie sie
  • +
  • -
  • 0

#8 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 02.12.2008 10:54

Jakby cos takiego powstalo to na pewno pomoge ;-)
  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych