Outlaw Posted August 10, 2019 Share Posted August 10, 2019 Guys i've made this code and its working very well weapons = {22, 23, 24, 26, 27, 28, 29, 30, 31, 32, } function sendHeadshot ( attacker, weapon, bodypart, loss ) local hp = getElementHealth(source) end if attacker == getLocalPlayer() then if bodypart == 9 and weapon == 34 or weapon == 33 or weapon == 24 or weapon == 25 then triggerServerEvent( "onServerHeadshot", getRootElement(), source, attacker, weapon, loss ) setElementHealth ( source, 0 ) setPedHeadless( source, true ) end elseif bodypart == 9 and #weapons then setElementHealth ( source, hp-50 ) end end addEventHandler ( "onClientPedDamage", getRootElement(), sendHeadshot ) addEventHandler ( "onClientPlayerDamage", getRootElement(), sendHeadshot ) The question is: If i want to check if the weapon is M4 so i write: if weapon == 31 then And after using the table, when i wrote #weapons it worked fine but i wonder how did the server knew that #weapons = weapon ? PS: first time i use tables Link to comment
Scripting Moderators ds1-e Posted August 10, 2019 Scripting Moderators Share Posted August 10, 2019 6 minutes ago, Outlaw said: Guys i've made this code and its working very well weapons = {22, 23, 24, 26, 27, 28, 29, 30, 31, 32, } function sendHeadshot ( attacker, weapon, bodypart, loss ) local hp = getElementHealth(source) end if attacker == getLocalPlayer() then if bodypart == 9 and weapon == 34 or weapon == 33 or weapon == 24 or weapon == 25 then triggerServerEvent( "onServerHeadshot", getRootElement(), source, attacker, weapon, loss ) setElementHealth ( source, 0 ) setPedHeadless( source, true ) end elseif bodypart == 9 and #weapons then setElementHealth ( source, hp-50 ) end end addEventHandler ( "onClientPedDamage", getRootElement(), sendHeadshot ) addEventHandler ( "onClientPlayerDamage", getRootElement(), sendHeadshot ) The question is: If i want to check if the weapon is M4 so i write: if weapon == 31 then And after using the table, when i wrote #weapons it worked fine but i wonder how did the server knew that #weapons = weapon ? PS: first time i use tables What you try to achieve? #weapons -- will return `weapons` table size If you want to do something when body part is headshot and weapon is in table, then you would need to change a bit a table structure (and condition too), to not loop necessary. weapons = { [22] = true, [23] = true, [24] = true, [26] = true, [27] = true, [28] = true, [29] = true, [30] = true, [31] = true, [32] = true, } And condition from: elseif bodypart == 9 and #weapons then to: elseif bodypart == 9 and weapons[weapon] then So, this way you check if weapon id exists in table, and it's not false and not nil. If you would change true -> false for a weapon, then this weapon wouldn't count as the one which fulfills the condition - because it would be false. Link to comment
Outlaw Posted August 10, 2019 Author Share Posted August 10, 2019 (edited) 11 minutes ago, majqq said: What you try to achieve? #weapons -- will return `weapons` table size If you want to do something when body part is headshot and weapon is in table, then you would need to change a bit a table structure (and condition too), to not loop necessary. weapons = { [22] = true, [23] = true, [24] = true, [26] = true, [27] = true, [28] = true, [29] = true, [30] = true, [31] = true, [32] = true, } And condition from: elseif bodypart == 9 and #weapons then to: elseif bodypart == 9 and weapons[weapon] then So, this way you check if weapon id exists in table, and it's not false and not nil. If you would change true -> false for a weapon, then this weapon wouldn't count as the one which fulfills the condition - because it would be false. I will try your code it seems much better but my question is: The word to check the weapon is "weapon",( example: if weapon == 31) but i'm a bit confused how the" #weapons" considered as "weapon" the 2 words dont look the same in case instead of weapons table i didn't put the weapons ids, i put bodyparts ex: bodypartss {3, 4, 5, 6, 7, 8, 9,} elseif weapon == 31 and #bodypartss then How the server will read them? I'm still new in scripting Edited August 10, 2019 by Outlaw Link to comment
Scripting Moderators ds1-e Posted August 10, 2019 Scripting Moderators Share Posted August 10, 2019 (edited) 31 minutes ago, Outlaw said: I will try your code it seems much better but my question is: The word to check the weapon is "weapon",( example: if weapon == 31) but i'm a bit confused how the" #weapons" considered as "weapon" the 2 words dont look the same in case instead of weapons table i didn't put the weapons ids, i put bodyparts ex: bodypartss {3, 4, 5, 6, 7, 8, 9,} elseif weapon == 31 and #bodypartss then How the server will read them? I'm still new in scripting It's up to you how you will call them. weapon is parameter declared in function arguments. And weapons -- or bodypartss are global tables which could be accessed from every scope of file and other script files declared on same side. Edited August 10, 2019 by majqq Link to comment
Outlaw Posted August 10, 2019 Author Share Posted August 10, 2019 1 hour ago, majqq said: It's up to you how you will call them. weapon is parameter declared in function arguments. And weapons -- or bodypartss are global tables which could be accessed from every scope of file and other script files declared on same side. Dude please focus with me i know that i can change the name of the parametres im talking about #weapons How did my server knew that #weapons is the parametre(weapon) ? (also there is difference between the words, the parametre is weapon) and my table is weapons (The 's') Link to comment
Scripting Moderators ds1-e Posted August 11, 2019 Scripting Moderators Share Posted August 11, 2019 8 hours ago, Outlaw said: Dude please focus with me i know that i can change the name of the parametres im talking about #weapons How did my server knew that #weapons is the parametre(weapon) ? (also there is difference between the words, the parametre is weapon) and my table is weapons (The 's') #weapons It will return table size, nothing more. To check if any weapon exists in table you need to index: weapon -- of course it can be any other variable, but in this case it should be number. between brackets: weapons[ ] So it will look like: weapons[weapon] -- you get what i mean? 1 Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now