… | |
… | |
43 | static const hook_entry plug_hooks[NR_OF_HOOKS] = { |
43 | static const hook_entry plug_hooks[NR_OF_HOOKS] = { |
44 | {cfapi_system_register_global_event, 1, "cfapi_system_register_global_event"}, |
44 | {cfapi_system_register_global_event, 1, "cfapi_system_register_global_event"}, |
45 | {cfapi_system_unregister_global_event, 3, "cfapi_system_unregister_global_event"}, |
45 | {cfapi_system_unregister_global_event, 3, "cfapi_system_unregister_global_event"}, |
46 | {cfapi_system_check_path, 4, "cfapi_system_check_path"}, |
46 | {cfapi_system_check_path, 4, "cfapi_system_check_path"}, |
47 | {NULL, 5, "cfapi_system_re_cmp"}, |
47 | {NULL, 5, "cfapi_system_re_cmp"}, |
48 | {cfapi_system_strdup_local, 6, "cfapi_system_strdup_local"}, |
48 | {cfapi_system_strdup, 6, "cfapi_system_strdup"}, |
49 | {cfapi_system_directory, 7, "cfapi_system_directory"}, |
49 | {cfapi_system_directory, 7, "cfapi_system_directory"}, |
50 | {cfapi_system_find_animation, 8, "cfapi_system_find_animation"}, |
50 | {cfapi_system_find_animation, 8, "cfapi_system_find_animation"}, |
51 | {cfapi_object_clean_object, 9, "cfapi_object_clean_object"}, |
51 | {cfapi_object_clean_object, 9, "cfapi_object_clean_object"}, |
52 | {cfapi_object_on_same_map, 10, "cfapi_object_on_same_map"}, |
52 | {cfapi_object_on_same_map, 10, "cfapi_object_on_same_map"}, |
53 | {cfapi_object_get_key, 11, "cfapi_object_get_key"}, |
53 | {cfapi_object_get_key, 11, "cfapi_object_get_key"}, |
… | |
… | |
482 | *type = CFAPI_INT; |
482 | *type = CFAPI_INT; |
483 | return &rv; |
483 | return &rv; |
484 | } |
484 | } |
485 | |
485 | |
486 | void * |
486 | void * |
487 | cfapi_system_strdup_local (int *type, ...) |
487 | cfapi_system_strdup (int *type, ...) |
488 | { |
488 | { |
489 | va_list args; |
489 | va_list args; |
490 | char *txt; |
490 | char *txt; |
491 | |
491 | |
492 | va_start (args, type); |
492 | va_start (args, type); |
493 | txt = va_arg (args, char *); |
493 | txt = va_arg (args, char *); |
494 | |
494 | |
495 | va_end (args); |
495 | va_end (args); |
496 | *type = CFAPI_STRING; |
496 | *type = CFAPI_STRING; |
497 | return strdup_local (txt); |
497 | return strdup (txt); |
498 | } |
498 | } |
499 | |
499 | |
500 | void * |
500 | void * |
501 | cfapi_system_register_global_event (int *type, ...) |
501 | cfapi_system_register_global_event (int *type, ...) |
502 | { |
502 | { |
… | |
… | |
1637 | rv = &op->stats.exp; |
1637 | rv = &op->stats.exp; |
1638 | *type = CFAPI_LONG; |
1638 | *type = CFAPI_LONG; |
1639 | break; |
1639 | break; |
1640 | |
1640 | |
1641 | case CFAPI_OBJECT_PROP_OWNER: |
1641 | case CFAPI_OBJECT_PROP_OWNER: |
1642 | rv = get_owner (op); |
1642 | rv = op->owner; |
1643 | *type = CFAPI_POBJECT; |
1643 | *type = CFAPI_POBJECT; |
1644 | break; |
1644 | break; |
1645 | |
1645 | |
1646 | case CFAPI_OBJECT_PROP_PRESENT: |
1646 | case CFAPI_OBJECT_PROP_PRESENT: |
1647 | { |
1647 | { |
… | |
… | |
1689 | case CFAPI_OBJECT_PROP_MERGEABLE: |
1689 | case CFAPI_OBJECT_PROP_MERGEABLE: |
1690 | { |
1690 | { |
1691 | object *op2; |
1691 | object *op2; |
1692 | op2 = va_arg (args, object *); |
1692 | op2 = va_arg (args, object *); |
1693 | |
1693 | |
1694 | ri = CAN_MERGE (op, op2); |
1694 | ri = object::can_merge_slow (op, op2); |
1695 | rv = &ri; |
1695 | rv = &ri; |
1696 | } |
1696 | } |
1697 | *type = CFAPI_INT; |
1697 | *type = CFAPI_INT; |
1698 | break; |
1698 | break; |
1699 | |
1699 | |
… | |
… | |
1846 | rv = &ri; |
1846 | rv = &ri; |
1847 | *type = CFAPI_INT; |
1847 | *type = CFAPI_INT; |
1848 | break; |
1848 | break; |
1849 | |
1849 | |
1850 | case CFAPI_PLAYER_PROP_IP: |
1850 | case CFAPI_PLAYER_PROP_IP: |
1851 | rv = op->contr->socket.host; |
1851 | rv = op->contr->socket->host; |
1852 | *type = CFAPI_STRING; |
1852 | *type = CFAPI_STRING; |
1853 | break; |
1853 | break; |
1854 | |
1854 | |
1855 | case CFAPI_PLAYER_PROP_MARKED_ITEM: |
1855 | case CFAPI_PLAYER_PROP_MARKED_ITEM: |
1856 | rv = find_marked_object (op); |
1856 | rv = find_marked_object (op); |
… | |
… | |
2271 | break; |
2271 | break; |
2272 | |
2272 | |
2273 | case CFAPI_OBJECT_PROP_OWNER: |
2273 | case CFAPI_OBJECT_PROP_OWNER: |
2274 | oparg = va_arg (args, object *); |
2274 | oparg = va_arg (args, object *); |
2275 | |
2275 | |
2276 | set_owner (op, oparg); |
2276 | op->set_owner (oparg); |
2277 | break; |
2277 | break; |
2278 | |
2278 | |
2279 | case CFAPI_OBJECT_PROP_CHEATER: |
2279 | case CFAPI_OBJECT_PROP_CHEATER: |
2280 | set_cheat (op); |
2280 | set_cheat (op); |
2281 | break; |
2281 | break; |
… | |
… | |
2648 | *type = CFAPI_POBJECT; |
2648 | *type = CFAPI_POBJECT; |
2649 | return object_create_clone (op); |
2649 | return object_create_clone (op); |
2650 | } |
2650 | } |
2651 | else |
2651 | else |
2652 | { |
2652 | { |
2653 | object *tmp; |
2653 | object *tmp = op->clone (); |
2654 | |
|
|
2655 | tmp = object::create (); |
|
|
2656 | op->copy_to (tmp); |
|
|
2657 | *type = CFAPI_POBJECT; |
2654 | *type = CFAPI_POBJECT; |
2658 | return tmp; |
2655 | return tmp; |
2659 | } |
2656 | } |
2660 | } |
2657 | } |
2661 | void * |
2658 | void * |
… | |
… | |
2912 | |
2909 | |
2913 | op = va_arg (args, object *); |
2910 | op = va_arg (args, object *); |
2914 | |
2911 | |
2915 | va_end (args); |
2912 | va_end (args); |
2916 | |
2913 | |
2917 | clear_object (op); |
2914 | op->clear (); |
2918 | *type = CFAPI_NONE; |
2915 | *type = CFAPI_NONE; |
2919 | return NULL; |
2916 | return NULL; |
2920 | } |
2917 | } |
2921 | |
2918 | |
2922 | void * |
2919 | void * |
… | |
… | |
3313 | drop (author, op); |
3310 | drop (author, op); |
3314 | |
3311 | |
3315 | if (author->type == PLAYER) |
3312 | if (author->type == PLAYER) |
3316 | { |
3313 | { |
3317 | author->contr->count = 0; |
3314 | author->contr->count = 0; |
3318 | author->contr->socket.update_look = 1; |
3315 | author->contr->socket->update_look = 1; |
3319 | } |
3316 | } |
3320 | |
3317 | |
3321 | *type = CFAPI_NONE; |
3318 | *type = CFAPI_NONE; |
3322 | return NULL; |
3319 | return NULL; |
3323 | } |
3320 | } |