JSValueRef js_event_call_object_by_id_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { int n,arg_count; char func_name[64],err_str[256]; JSValueRef rval,args[20]; obj_type *obj; if (!script_check_param_at_least_count(cx,func,argc,2,exception)) return(script_null_to_value(cx)); if (!script_check_fail_in_construct(cx,func,j_obj,exception)) return(script_null_to_value(cx)); // get arguments obj=script_find_obj_from_uid_arg(cx,argv[0],exception); if (obj==NULL) return(script_null_to_value(cx)); script_value_to_string(cx,argv[1],func_name,64); arg_count=argc-2; if (arg_count<0) arg_count=0; if (arg_count>20) arg_count=20; for (n=0;n!=arg_count;n++) { args[n]=argv[n+2]; } // call function rval=scripts_direct_call(script_get_index(j_obj),obj->script_idx,-1,func_name,arg_count,args,err_str); if (rval==NULL) { *exception=script_create_exception(cx,err_str); return(script_null_to_value(cx)); } return(rval); }
JSBool js_multiplayer_score_get_object_func(JSContext *cx,JSObject *j_obj,uintN argc,jsval *argv,jsval *rval) { obj_type *obj; obj=script_find_obj_from_uid_arg(argv[0]); if (obj==NULL) return(JS_FALSE); *rval=INT_TO_JSVAL(obj->score.score); return(JS_TRUE); }
JSValueRef js_map_object_set_hidden_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { obj_type *obj; if (!script_check_param_count(cx,func,argc,2,exception)) return(script_null_to_value(cx)); obj=script_find_obj_from_uid_arg(cx,argv[0],exception); if (obj!=NULL) obj->hidden=script_value_to_bool(cx,argv[1]); return(script_null_to_value(cx)); }
JSValueRef js_map_object_is_max_health_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { obj_type *obj; if (!script_check_param_count(cx,func,argc,1,exception)) return(script_null_to_value(cx)); obj=script_find_obj_from_uid_arg(cx,argv[0],exception); if (obj==NULL) return(script_null_to_value(cx)); return(script_bool_to_value(cx,obj->status.health.value>=obj->status.health.max_value)); }
JSValueRef js_map_object_get_last_damage_object_id_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { obj_type *obj; if (!script_check_param_count(cx,func,argc,1,exception)) return(script_null_to_value(cx)); obj=script_find_obj_from_uid_arg(cx,argv[0],exception); if (obj==NULL) return(script_null_to_value(cx)); return(script_int_to_value(cx,obj->damage_obj_idx)); }
JSValueRef js_map_object_was_telefrag_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { obj_type *obj; if (!script_check_param_count(cx,func,argc,1,exception)) return(script_null_to_value(cx)); obj=script_find_obj_from_uid_arg(cx,argv[0],exception); if (obj==NULL) return(script_null_to_value(cx)); return(script_bool_to_value(cx,obj->death_telefrag)); }
JSValueRef js_multiplayer_score_get_object_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { obj_type *obj; if (!script_check_param_count(cx,func,argc,1,exception)) return(script_null_to_value(cx)); obj=script_find_obj_from_uid_arg(cx,argv[0],exception); if (obj==NULL) return(FALSE); return(script_int_to_value(cx,obj->score.score)); }
JSValueRef js_map_object_is_contact_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { obj_type *obj; if (!script_check_param_count(cx,func,argc,1,exception)) return(script_null_to_value(cx)); obj=script_find_obj_from_uid_arg(cx,argv[0],exception); if (obj==NULL) return(script_null_to_value(cx)); return(script_bool_to_value(cx,(obj->contact.object_on) || (obj->contact.projectile_on) || (obj->contact.force_on))); }
JSValueRef js_map_object_add_goal_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { obj_type *obj; if (!script_check_param_count(cx,func,argc,1,exception)) return(script_null_to_value(cx)); obj=script_find_obj_from_uid_arg(cx,argv[0],exception); if (obj!=NULL) object_score_goal(obj); return(script_null_to_value(cx)); }
JSValueRef js_map_object_get_team_name_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { char str[32]; obj_type *obj; if (!script_check_param_count(cx,func,argc,1,exception)) return(script_null_to_value(cx)); obj=script_find_obj_from_uid_arg(cx,argv[0],exception); if (obj==NULL) return(script_null_to_value(cx)); object_team_get_name(obj->team_idx,str); return(script_string_to_value(cx,str)); }
JSValueRef js_obj_position_distance_to_object_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { obj_type *obj,*dist_obj; if (!script_check_param_count(cx,func,argc,1,exception)) return(script_null_to_value(cx)); obj=object_get_attach(j_obj); dist_obj=script_find_obj_from_uid_arg(cx,argv[0],exception); if (dist_obj==NULL) return(script_null_to_value(cx)); return(script_int_to_value(cx,distance_get(obj->pnt.x,obj->pnt.y,obj->pnt.z,dist_obj->pnt.x,dist_obj->pnt.y,dist_obj->pnt.z))); }
JSValueRef js_map_object_is_facing_id_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { float ang_y,ang_dif; bool cwise; obj_type *obj,*obj2; if (!script_check_param_count(cx,func,argc,3,exception)) return(script_null_to_value(cx)); // uids obj=script_find_obj_from_uid_arg(cx,argv[0],exception); if (obj==NULL) return(script_null_to_value(cx)); obj2=script_find_obj_from_uid_arg(cx,argv[1],exception); if (obj2==NULL) return(script_null_to_value(cx)); // get angles to ang_y=angle_find(obj->pnt.x,obj->pnt.z,obj2->pnt.x,obj2->pnt.z); ang_dif=angle_dif(ang_y,angle_add(obj->ang.y,obj->face.ang.y),&cwise); return(script_bool_to_value(cx,ang_dif<script_value_to_float(cx,argv[2]))); }
JSValueRef js_map_object_get_distance_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { d3pnt pnt; obj_type *obj; if (!script_check_param_count(cx,func,argc,2,exception)) return(script_null_to_value(cx)); obj=script_find_obj_from_uid_arg(cx,argv[0],exception); if (obj==NULL) return(script_null_to_value(cx)); script_value_to_point(cx,argv[1],&pnt); return(script_int_to_value(cx,distance_get(obj->pnt.x,obj->pnt.y,obj->pnt.z,pnt.x,pnt.y,pnt.z))); }
JSValueRef js_map_object_get_team_color_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { d3col col; obj_type *obj; if (!script_check_param_count(cx,func,argc,1,exception)) return(script_null_to_value(cx)); obj=script_find_obj_from_uid_arg(cx,argv[0],exception); if (obj==NULL) return(script_null_to_value(cx)); object_team_get_tint(obj->team_idx,&col); return(script_color_to_value(cx,&col)); }
JSValueRef js_map_object_get_angle_to_id_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { d3ang ang; obj_type *obj,*obj2; if (!script_check_param_count(cx,func,argc,2,exception)) return(script_null_to_value(cx)); // uids obj=script_find_obj_from_uid_arg(cx,argv[0],exception); if (obj==NULL) return(script_null_to_value(cx)); obj2=script_find_obj_from_uid_arg(cx,argv[1],exception); if (obj2==NULL) return(script_null_to_value(cx)); // get angles to ang.x=angle_find(obj2->pnt.y,obj2->pnt.z,obj->pnt.y,obj->pnt.z); ang.y=angle_find(obj2->pnt.x,obj2->pnt.z,obj->pnt.x,obj->pnt.z); ang.z=angle_find(obj2->pnt.x,obj2->pnt.y,obj->pnt.x,obj->pnt.y); return(script_angle_to_value(cx,&ang)); }
JSValueRef js_map_object_get_position_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { obj_type *obj; if (!script_check_param_count(cx,func,argc,1,exception)) return(script_null_to_value(cx)); // uid obj=script_find_obj_from_uid_arg(cx,argv[0],exception); if (obj==NULL) return(script_null_to_value(cx)); // get position return(script_point_to_value(cx,&obj->pnt)); }
JSValueRef js_obj_motion_angle_face_object_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { obj_type *obj,*track_obj; if (!script_check_param_count(cx,func,argc,1,exception)) return(script_null_to_value(cx)); obj=object_get_attach(j_obj); track_obj=script_find_obj_from_uid_arg(cx,argv[0],exception); if (track_obj==NULL) return(script_null_to_value(cx)); object_face_object_start(obj,track_obj); return(script_null_to_value(cx)); }
JSValueRef js_map_object_shove_direct_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { d3vct vct; obj_type *obj; if (!script_check_param_count(cx,func,argc,2,exception)) return(script_null_to_value(cx)); obj=script_find_obj_from_uid_arg(cx,argv[0],exception); if (obj==NULL) return(script_null_to_value(cx)); script_value_to_vector(cx,argv[1],&vct); object_shove_direct(obj,&vct); return(script_null_to_value(cx)); }
JSValueRef js_map_object_get_object_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { obj_type *obj; script_type *script; if (!script_check_param_count(cx,func,argc,1,exception)) return(script_null_to_value(cx)); obj=script_find_obj_from_uid_arg(cx,argv[0],exception); if (obj==NULL) return(script_null_to_value(cx)); if (obj->script_idx==-1) return(script_null_to_value(cx)); script=js.script_list.scripts[obj->script_idx]; return((JSValueRef)script->obj); }
JSValueRef js_map_object_set_model_halo_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { int idx; obj_type *obj; if (!script_check_param_count(cx,func,argc,3,exception)) return(script_null_to_value(cx)); obj=script_find_obj_from_uid_arg(cx,argv[0],exception); if (obj!=NULL) { idx=script_value_to_int(cx,argv[1]); if ((idx>=0) && (idx<max_model_halo)) obj->draw.halos[idx].on=script_value_to_bool(cx,argv[2]); } return(script_null_to_value(cx)); }
JSValueRef js_map_object_remove_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { char err_str[256]; obj_type *obj; if (!script_check_param_count(cx,func,argc,1,exception)) return(script_null_to_value(cx)); obj=script_find_obj_from_uid_arg(cx,argv[0],exception); if (obj==NULL) return(script_null_to_value(cx)); if (!object_script_remove(obj->idx,err_str)) { *exception=script_create_exception(cx,err_str); } return(script_null_to_value(cx)); }
JSValueRef js_map_object_shove_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { float speed; d3ang ang; obj_type *obj; if (!script_check_param_count(cx,func,argc,3,exception)) return(script_null_to_value(cx)); obj=script_find_obj_from_uid_arg(cx,argv[0],exception); if (obj==NULL) return(script_null_to_value(cx)); script_value_to_angle(cx,argv[1],&ang); speed=script_value_to_float(cx,argv[2]); object_shove(obj,&ang,speed); return(script_null_to_value(cx)); }
JSValueRef js_map_object_move_to_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { d3pnt pnt; obj_type *obj; if (!script_check_param_count(cx,func,argc,3,exception)) return(script_null_to_value(cx)); obj=script_find_obj_from_uid_arg(cx,argv[0],exception); if (obj==NULL) return(script_null_to_value(cx)); script_value_to_point(cx,argv[1],&pnt); object_set_position(obj,pnt.x,pnt.y,pnt.z,script_value_to_float(cx,argv[2]),0); object_telefrag_players(obj,FALSE); return(script_null_to_value(cx)); }
JSValueRef js_proj_action_seek_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { proj_type *proj; obj_type *to_obj; if (!script_check_param_count(cx,func,argc,3,exception)) return(script_null_to_value(cx)); proj=proj_get_attach(j_obj); if (proj==NULL) return(script_null_to_value(cx)); to_obj=script_find_obj_from_uid_arg(cx,argv[0],exception); if (to_obj==NULL) return(script_null_to_value(cx)); projectile_seek(proj,to_obj,script_value_to_float(cx,argv[1]),script_value_to_float(cx,argv[2])); return(script_null_to_value(cx)); }
JSValueRef js_map_object_get_size_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { d3pnt pnt; obj_type *obj; if (!script_check_param_count(cx,func,argc,1,exception)) return(script_null_to_value(cx)); // uid obj=script_find_obj_from_uid_arg(cx,argv[0],exception); if (obj==NULL) return(script_null_to_value(cx)); // get size pnt.x=obj->size.x; pnt.y=obj->size.y; pnt.z=obj->size.z; return(script_point_to_value(cx,&pnt)); }
JSValueRef js_map_object_set_model_mesh_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { int idx; char name[name_str_len]; obj_type *obj; if (!script_check_param_count(cx,func,argc,3,exception)) return(script_null_to_value(cx)); obj=script_find_obj_from_uid_arg(cx,argv[0],exception); if (obj==NULL) return(script_null_to_value(cx)); script_value_to_string(cx,argv[1],name,name_str_len); idx=model_find_mesh_from_draw(&obj->draw,name); if (idx==-1) return(script_null_to_value(cx)); if (script_value_to_bool(cx,argv[2])) { obj->draw.mesh_mask|=(0x1<<idx); } else { obj->draw.mesh_mask&=((0x1<<idx)^0xFF); } return(script_null_to_value(cx)); }